分类: Java
2010-11-23 14:17:01
【注】JAVA采用大端字节序存储数据
由于不同的计算机系统采用不同的字节序存储数据,同样一个4字节的32位整数,在内存中存储的方式就不同. 字节序分为小尾字节序(Little Endian)和大尾字节序(Big Endian), Intel处理器大多数使用小尾字节序, Motorola处理器大多数使用大尾(Big Endian)字节序;
小尾就是低位字节排放在内存的低端,高位字节排放在内存的高端。
例如一个4字节的值为0x1234567的整数与高低字节对应关系:
01 |
23 |
45 |
67 |
Byte3 |
Byte2 |
Byte1 |
Byte0 |
高位字节--à---------à--------------à低位字节 |
将在内存中按照如下顺序排放:
内存地址序号 |
字节在内存中的地址 |
16进制值 |
0x03 |
Byte3 |
01 |
0x02 |
Byte2 |
23 |
0x01 |
Byte1 |
45 |
0x00 |
Byte0 |
67 |
大尾就是高位字节排放在内存的低端,低位字节排放在内存的高端。例如一个4字节的值为0x1234567的整数与高低字节对应关系:
01 |
23 |
45 |
67 |
Byte3 |
Byte2 |
Byte1 |
Byte0 |
高位字节--à---------à--------------à低位字节 |
将在内存中按照如下顺序排放:
内存地址序号 |
字节在内存中的地址 |
16进制值 |
0x03 |
Byte0 |
67 |
0x02 |
Byte1 |
45 |
0x01 |
Byte2 |
23 |
0x00 |
Byte3 |
01 |
TCP/IP各层协议将字节序定义为大尾,因此TCP/IP协议中使用的字节序通常称之为网络字节序。