1 基本
阅读RFC文档时,经常会看到MSB与LSB的缩写,如下图所示:
各自缩写:
MSB
:Most Significant Bit,多字节序列中具有最大权重的字节LSB
:Last(Least) Significant Bit,多字节序列中最小权重的字节其实还是很难理解,如上图所示,MSB指的是0~7位,LSB指的是8~15位。
2 扩展
谈到字节序,必然离不开大端字节序
、小端字节序
、网络字节序
、主机字节序
这四个概念
2.1 大端字节序和小端字节序
英文名是big endian 和little endian,主要跟多字节数据的存储顺序有关,通常来说Power PC使用的是大端字节序存储,Intel X86体系使用小端字节序存储。
简单来说,CPU对内存会进行编址,如:0x01, 0x02,每个地址存储一个字节,因此对于多字节序列来说就存在先存低字节还是高字节,比如对于整数0x1234(十六进制表示),是将0X12存到地址0x01还是地址0x02。这里又提到两个新的概念:低字节
和高字节
。
2.1.1 低字节和高字节
举个例子,整数0X1234
,高字节是0x12
,低字节是0x34
,为什么这样定义?学习计算机课程入门时就有提到高字节和低字节,里面就是这么定义的。其实也容易理解,0X1234,如果转换成十进制,显然0x12
权重比较大,0x34
权重比较小,发现这不是之前所提到的MSB
和LSB
么?
MSB就是我们通常提到的高字节
LSB就是我们通常提到的低字节
2.2.2 定义大端字节序和小端字节序
大端字节序就是低地址存放高字节(MSB)
小端字节序就是低地址存放低字节(LSB)
对于上面的例子来说:
大端字节序存放结果:
0x12 存放在0x01, 0x34存放在0x02
小端字节序存放结果:
0x12存放在0x02,0x34存放在0x01
3 总结
MSB就是我们通常提到的高字节
LSB就是我们通常提到的低字节
RFC文档列出多字节序列是用于指导数据通过网络发送多字节序列时应用程序如何打包,应用程序收到一段buffer时如果解包。