大端序与小端序

Eave 2025.12.16

字节序,又称端序或尾序(英语中用单词:Endianness 表示),在计算机领域中,指电脑内存中或在数字通信链路中,占用多个字节的数据的字节排列顺序。在几乎所有的平台上,多字节对象都被存储为连续的字节序列。

字节的排列方式有两个通用规则:

大端序(Big-Endian)将数据的低位字节存放在内存的高位地址,高位字节存放在低位地址。这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。

小端序(Little-Endian)将一个多位数的低位放在较小的地址处,高位放在较大的地址处,则称小端序。小端序与人类的阅读习惯相反,但更符合计算机读取内存的方式,因为CPU读取内存中的数据时,是从低地址向高地址方向进行读取的。

计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序


以一个32位整数0xC0A80101为例(十六进制表示)

这个数由4个字节组成:0xC00xA80x010x01

不同的字节序决定了这些字节在内存中的不同排列方式。

大端序:从大到小,符合直觉,大端序就像我们书写数字的方式:最重要的部分放在最前面。

在内存中,大端序的存储方式是:

内存低地址 → 高地址
 0xC0  |  0xA8  |  0x01  |  0x01
(最高位字节)         (最低位字节)

特点

• 高位字节存储在低地址

• 内存转储的内容与书写顺序完全一致

• 第一个字节直接就是符号位和最高位,便于快速判断正负和比较大小

小端序:从小到大,效率优先,小端序则反其道而行之:最不重要的部分放在最前面。

在内存中,小端序的存储方式是:

内存低地址 → 高地址
 0x01  |  0x01  |  0xA8  |  0xC0
(最低位字节)         (最高位字节)

特点

• 低位字节存储在低地址

• 内存转储的内容看起来是"倒着"的

• 对某些运算(如加法、类型转换)更高效

编程语言的抽象:高级编程语言通常对开发者隐藏字节序细节

• Java:始终使用大端序(网络字节序)

• Python、JavaScript:通过标准库提供字节序控制