字节序 | Byte Order

定义 | Definition

字节序(Byte Order)是指计算机系统中存储多字节数据时,字节排列的顺序。字节序主要分为两种类型:大端序(Big-endian)和小端序(Little-endian)。

Byte order refers to the sequence in which bytes are arranged in memory when storing multi-byte data in computer systems. The two main types of byte order are big-endian and little-endian.

大端序 | Big-endian

在大端序中,数据的高位字节存储在内存的低地址处,低位字节存储在高地址处。这种字节序的名字来源于《格列佛游记》,其中“大端派”(Big-endians)认为鸡蛋应该从大的一端打破。

In big-endian, the most significant byte (MSB) is stored at the lowest memory address, and the least significant byte (LSB) is stored at the highest address. The name “big-endian” comes from Gulliver’s Travels, where the “Big-endians” believed eggs should be cracked on the larger end.

示例 | Example

假设我们有一个 32 位整数 0x12345678,在大端序中的存储顺序为:

Memory representation of a 32-bit integer 0x12345678 in big-endian:

地址 | Address  值 | Value
0x00          0x12
0x01          0x34
0x02          0x56
0x03          0x78

小端序 | Little-endian

在小端序中,数据的低位字节存储在内存的低地址处,高位字节存储在高地址处。小端序的命名同样来源于《格列佛游记》,其中“小端派”(Little-endians)认为鸡蛋应该从小的一端打破。

In little-endian, the least significant byte (LSB) is stored at the lowest memory address, and the most significant byte (MSB) is stored at the highest address. The name “little-endian” also comes from Gulliver’s Travels, where the “Little-endians” believed eggs should be cracked on the smaller end.

示例 | Example

假设我们有一个 32 位整数 0x12345678,在小端序中的存储顺序为:

Memory representation of a 32-bit integer 0x12345678 in little-endian:

地址 | Address  值 | Value
0x00          0x78
0x01          0x56
0x02          0x34
0x03          0x12

注意点 | Important Points

  1. 字节序和系统架构:字节序是硬件架构的特性,不同的处理器可能使用不同的字节序。例如,x86 架构通常使用小端序,而某些 RISC 处理器可能使用大端序。

  2. 数据传输和网络协议:在数据传输和网络协议中,通常使用大端序作为标准。这种字节序也被称为“网络字节序”。

  3. 混淆和转换:在多平台开发中,混淆字节序可能导致数据错误。开发者需要小心处理不同平台之间的数据转换问题。

  4. Byte Order and System Architecture: Byte order is a hardware characteristic, and different processors may use different byte orders. For example, x86 architecture typically uses little-endian, while some RISC processors may use big-endian.

  5. Data Transmission and Network Protocols: Big-endian is commonly used as a standard in data transmission and network protocols. This byte order is also known as “network byte order.”

  6. Confusion and Conversion: In cross-platform development, confusion in byte order can lead to data errors. Developers must carefully handle data conversion issues between different platforms.