# Java 中的小端和大端

> 原文： [https://howtodoinjava.com/java/basics/little-endian-and-big-endian-in-java/](https://howtodoinjava.com/java/basics/little-endian-and-big-endian-in-java/)

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

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

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

例如，将 32 位十六进制值`0x45679812`如下存储在内存中：

```java
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 对您隐藏了内部字节序。**

**祝您学习愉快！**