Skip to content

字节序(Byte Order)

字节序(Byte Order)是指在多字节数据存储时,高位字节和低位字节的存储顺序。主要分为大端字节序(Big Endian)和小端字节序(Little Endian)两种。

大端(Big Endian)

在大端存储方式中,最高有效字节(MSB)存储在最低的地址处,而最低有效字节(LSB)存储在最高的地址处。换句话说,数据的高位字节先存储在内存的低地址处,而数据的低位字节则后存储在内存的高地址处。大端存储方式通常被称为网络字节序。

小端(Little Endian)

在小端存储方式中,最低有效字节(LSB)存储在最低的地址处,而最高有效字节(MSB)存储在最高的地址处。换句话说,数据的低位字节先存储在内存的低地址处,而数据的高位字节则后存储在内存的高地址处。小端存储方式通常被称为主机字节序。

例如

以一个 32 位整数 0x12345678 为例,如果使用大端存储方式,那么它在内存中的存储方式如下:

大端
低地址 -----------------> 高地址
+------+------+------+------+
|  12  |  34  |  56  |  78  |
+------+------+------+------+
大端
低地址 -----------------> 高地址
+------+------+------+------+
|  12  |  34  |  56  |  78  |
+------+------+------+------+

而如果使用小端存储方式,那么它在内存中的存储方式如下:

低地址 -----------------> 高地址
+------+------+------+------+
|  78  |  56  |  34  |  12  |
+------+------+------+------+
低地址 -----------------> 高地址
+------+------+------+------+
|  78  |  56  |  34  |  12  |
+------+------+------+------+