Java中的Little-Endian和Big-Endian

您必须在工程课程中多次听到这些术语Little-Endian和Big-Endian。让我们快速回顾一下这些词背后的概念。

这两个术语与CPU体系结构中一个字中字节方向有关。计算机内存由正整数的地址引用。将数字的最低有效字节存储在计算机内存中的最高有效字节之前是“自然”的。有时,计算机设计人员喜欢使用这种表示形式的逆序版本。

“自然”顺序(在内存中,低位有效字节先于高位有效字节)被称为little-endian。像IBM,CRAY和Sun这样的许多供应商都喜欢相反的顺序,当然,这种顺序被称为big-endian。

例如,将32位十六进制值0x45679812如下存储在内存中:

地址00 01 02 03
-------------------------------
小端12 98 67 45
大端优先45 67 98 12

当在两台机器之间传输数据时,字节序差异可能是一个问题。

Java二进制格式文件中的所有内容均按大端顺序存储。有时称为网络订单。这意味着,如果仅使用Java,则在所有平台(Mac,PC,UNIX等)上,所有文件的处理方式都相同。您可以自由地电子交换二进制数据,而无需担心字节顺序。

问题是当您必须与某些不是用Java编写的使用低端顺序的程序交换数据文件时,该程序通常使用C编写。某些平台在内部使用了大端顺序(Mac,IBM 390)。有些使用小端序(Intel)。

Java对您隐藏了内部字节序。

saigon has written 1445 articles

Leave a Reply