Big Endian和Little Endian Byte命令有什么区别?
这两者似乎都与Unicode和UTF16有关.我们到底在哪里使用它?
Big-Endian(BE)/ Little-Endian(LE)是组织多字节单词的两种方法.例如,当使用两个字节来表示UTF-16中的字符时,有两种方法可以将字符表示0x1234
为字节串(0x00-0xFF):
Byte Index: 0 1 --------------------- Big-Endian: 12 34 Little-Endian: 34 12
为了确定文本是使用UTF-16BE还是UTF-16LE,规范建议在字符串前加一个字节顺序标记(BOM),表示字符U + FEFF.所以,如果一个UTF-16编码的文本文件的头两个字节是FE
,FF
,编码是UTF-16BE.对于FF
,FE
它是UTF-16LE.
一个直观的例子:不同编码中的"示例"一词(带BOM的UTF-16):
Byte Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ------------------------------------------------------------ ASCII: 45 78 61 6d 70 6c 65 UTF-16BE: FE FF 00 45 00 78 00 61 00 6d 00 70 00 6c 00 65 UTF-16LE: FF FE 45 00 78 00 61 00 6d 00 70 00 6c 00 65 00
有关详细信息,请阅读Endianness和/或UTF-16的Wikipedia页面.
费迪南德的答案(和其他人)是正确的,但不完整.
Big Endian(BE)/ Little Endian(LE)与UTF-16或UTF-32无关.它们在Unicode之前存在,并影响数字字节如何存储在计算机的内存中.它们取决于处理器.
如果你有一个带有值的数字,0x12345678
那么在内存中它将表示为12 34 56 78
(BE)或78 56 34 12
(LE).
UTF-16和UTF-32碰巧分别在2个4字节上表示,因此字节的顺序遵循该平台上任何数字所遵循的顺序.
UTF-16将Unicode编码为16位值.大多数现代文件系统都以8位字节运行.因此,例如,要将UTF-16编码文件保存到磁盘,必须确定16位值的哪一部分在第一个字节中,哪个部分在第二个字节中.
维基百科有更完整的解释.