- Little Endian 和 Big Endian :
- 在计算机中,所有的数据都是以二进制(0、1)的形式进行存储的。
- 大端 和 小端 是指数据在按字节存储时,的存储顺序不同。
- 场景:
- 有一个十六进制值 0x12345678 表示的 32 位整数。
- 由于, 8 位 = 1个字节,该整数由两四个字节 0x12、0x34、0x56、0x78 组成。
- 注意:现代计算机通常按 字节编址。如:内存中,每个字节对应一个内存地址。
1、Big Endian (大端)
- 在 Big Endian 系统中,最高有效字节存储在较小的内存地址中。
- 即:高位字节 0x12 存储在最小的内存地址中,依次向高位地址存储低位字节。
内存地址 | 0x1000 | 0x1001 | 0x1002 | 0x1003 |
---|---|---|---|---|
存储内容 | 0x12 | 0x34 | 0x56 | 0x78 |
2、Little Endian (小端)
- 在 Little Endian 系统中,最高有效字节存储在较高的内存地址中。
- 即:低位字节 0x78 存储在最小的内存地址中,依次向高位地址存储高位字节。
- 优点:
- 当高位字节需要补零时,特别方便。
内存地址 | 0x1000 | 0x1001 | 0x1002 | 0x1003 |
---|---|---|---|---|
存储内容 | 0x78 | 0x56 | 0x34 | 0x12 |
3、对比
维度 | 大端模式 | 小端模式 |
---|---|---|
优势 | 符合人类直觉,适合网络传输和协议设计。 | 硬件处理高效,适合 CPU 运算。 |
劣势 | 硬件处理时需要额外转换。 | 不符合直觉,需注意数据解析。 |
典型代表 | 网络协议、Java、PowerPC CPU。 | x86/x64 CPU、Windows/Linux、ARM。 |