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协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在发送端发送数据时,发送的第一个字节是该数值在内存中的起始地址处对应的那个字节,也就是说,该数值在内存中的起始地址处对应的那个字节就是要发送的第一个高位字节(即:高位字节存放在低地址处);由此可见,多字节数值在发送之前,在内存中因该是以大端法存

本文介绍了计算机内存中的大小端问题,解释了Big-Endian和Little-Endian的区别,并详细说明了网络字节序在TCP/IP协议中的大端规则。此外,还探讨了LSB(最低有效位)和MSB(最高有效位)的概念,特别是在多比特信号排序中的应用。
最低0.47元/天 解锁文章
337

被折叠的 条评论
为什么被折叠?



