当前位置:  开发笔记 > 编程语言 > 正文

Big Endian和Little Endian Byte顺序之间的区别

如何解决《BigEndian和LittleEndianByte顺序之间的区别》经验,为你挑选了3个好方法。

Big Endian和Little Endian Byte命令有什么区别?

这两者似乎都与Unicode和UTF16有关.我们到底在哪里使用它?



1> Ferdinand Be..:

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页面.



2> Mihai Nita..:

费迪南德的答案(和其他人)是正确的,但不完整.

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字节上表示,因此字节的顺序遵循该平台上任何数字所遵循的顺序.



3> joev..:

UTF-16将Unicode编码为16位值.大多数现代文件系统都以8位字节运行.因此,例如,要将UTF-16编码文件保存到磁盘,必须确定16位值的哪一部分在第一个字节中,哪个部分在第二个字节中.

维基百科有更完整的解释.


无论底层硬件如何,您都可以按字节顺序存储UTF-16编码文件.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有