- 主机字节序:又叫cpu字节序,其不是有操作系统决定的,而是由cpu指令集群架构决定的
- 主机字节序分为两种
<1>大端字节序(big endian)--高序字节存储在低位地址,低序字节存储在高位地址
<2>小端字节序(small endian)--高序字节存储在高位地址,低序字节存储在低位地址 - 如图:
内存地址
0x00
0x01
0x02
0x03
大端
12
34
56
78
小端
78
56
34
12
- 判断大小端主机字节序的代码如下
#include <iostream> using namespace std; int main() { int i = 0x12345678; if (*((char*)&i) == 0x12) cout << "大端" << endl; else cout << "小端" << endl; return 0; }
- 各架构处理器的字节序
小端序(x86(Intel、AMD)、MOS Technology 6502、Z80、VAX、PDP-11)
大端序(Motorola 6800、Motorola 68000、PowerPC 970、System/370、SPARC(除 V9 外))
可自由配置的(ARM(默认小端序)、PowerPC(除 PowerPC 970 外)、DEC Alpha、SPARC V9、MIPS、PA-RISC 及 IA64 的字节序是可配置的。) - 网络字节顺序是Tcp/ip中规定好的一种数据表示格式,它与具体的cpu类型,操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。 网络字节顺序采用的是大端排列顺序。