1.大小端的概念
大小端的问题主要是由计算机内存中多字节形数据类型的存在而引起的,他的研究单位是字节,对于char行数据类型,就是一个字节,八位,是不存在大小端问题的;但是对于short、int、float等数据类型,表示一个数据需要多个字节,那么这多个字节之间的顺序就十分重要了。
Big-Endian和Little-Endian的定义如下:
-
Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
-
Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
注意上面的程序中数组是char型的,数据0x123456是int型,占四个字节,所以指针才能逐字节访问。
2.网络字节序
网络上传输的数据都是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它将这个字节作为高位字节还是低位字节处理,是一个比较有意义的问题;
UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在