Endianness
字节序是多字节数值在内存中存储的字节排列顺序:大端(big-endian)高位在前,小端(little-endian)低位在前。
用途
解决不同 CPU 架构间多字节数据的存储与传输一致性问题。
机制
大端序:最高有效字节存于最低地址(如 0x010203 存为 01 02 03),网络协议常用。小端序:最低有效字节存于最低地址(存为 03 02 01),x86/ARM 常用。UTF-16/32 需 BOM 或显式声明字节序。
用例
- 网络协议字段(网络字节序为大端)
- 二进制文件格式(如 PNG 大端、ELF 小端)
- 跨平台数据序列化
- 嵌入式与驱动开发
示例
- 输入
0x01020304输出BE: 01 02 03 04 / LE: 04 03 02 01The same value in both byte orders
常见错误
- Sending host-order integers without network byte order conversion
- Convert explicitly with htonl/ntohl or DataView