C# Unicode编码区分大小端,且Encoding.Unicode采用了小端模式

发布时间 2023-08-25 10:45:36作者: WmW

ASCII由于只有一个字节,因此没有大小端的问题

UTF-8因为其本身附带了字节结构信息,因此也没有大小端问题

Unicode因为至少2个字节,且一个符号强制规定对应一个数值,因此有大小端的问题

C#本地是小端模式,Encoding.Unicode默认也采用了小端模式,不过官方给了一个Encoding.BigEndianUnicode,这个静态属性是大端模式

            string str = "abc123测试啊";
            byte[] bs1 = Encoding.Unicode.GetBytes(str); //这个属性的函数是小端模式
            Console.WriteLine("小端:" + bs1.ToHexString());
            byte[] bs2 = Encoding.BigEndianUnicode.GetBytes(str); //官方给了另一个大端的属性
            Console.WriteLine("大端:" + bs2.ToHexString());