99.数据大小端模式
核心概念:字节在内存中的排列顺序
假设有一个 32位(4字节) 的十六进制数:0x12345678
它由4个字节组成:0x12
| 0x34
| 0x56
| 0x78
大端序 和 小端序 决定了这4个字节在内存(或数据传输)中的存放顺序:
1. 大端序 (Big-Endian)
规则:高字节 存放在 低地址
(就像我们写数字一样,高位在前)
内存布局:
内存低地址 → 高地址 | ||||
---|---|---|---|---|
地址 | 0x00 | 0x01 | 0x02 | 0x03 |
存储内容 | 12 | 34 | 56 | 78 |
应用场景:
网络传输 (TCP/IP协议规定使用大端序,因此也称为网络字节序)
Java虚拟机
某些处理器 (如 PowerPC, IBM 390)
2. 小端序 (Little-Endian)
规则:低字节 存放在 低地址
(更像我们做算术,先处理个位)
内存布局:
内存低地址 → 高地址 | ||||
---|---|---|---|---|
地址 | 0x00 | 0x01 | 0x02 | 0x03 |
存储内容 | 78 | 56 | 34 | 12 |
应用场景:
x86/x86-64 架构的 Intel/AMD CPU
ARM 处理器 (可配置,但通常默认为小端序)
大多数桌面计算机和手机
生活中的比喻
大端序:就像我们写日期 "2023年10月01日" → 最大的单位(年)写在最前面。
小端序:就像欧美写日期 "10/01/2023" → 最小的单位(日)写在最前面。