Java 中的小端和大端

Java 中的小端和大端

原文: https://howtodoinjava.com/java/basics/little-endian-and-big-endian-in-java/

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

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

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

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

Address         00  01  02  03
-------------------------------
Little-endian   12  98  67  45
Big-endian      45  67  98  12

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

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

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

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

祝您学习愉快!