本篇只描述Motorola格式的字节排序方式,Intel格式的不作介绍。
首先以下面的表格来表示字节顺序和位顺序,用红色背景表示高位MSB,蓝色背景表示地位LSB,绿色为LSB到MSB的过渡。
下面以起始位位34,长度位12的信号来做演示来区分Motorola Forward MSB和Motorola Forward LSB的区别。
Motorola Forward MSB(大端在前):
矩阵文档中起始位置则为MSB的起始位34,往高字节借位。
填入0xB79,即101101111001,如下图:
Motorola Forward LSB(小端在前):
矩阵文档中起始位置则为LSB的起始位34,往低字节借位。
填入0xB79,即101101111001,如下图:
注意的是Motorola格式主要在于跨字节的区别,如果计算错了会导致发送的报文或解析的报文异常。其次要注意起始位是从第几位开始计算,Motorola Forward MSB以高位MSB为起始位,Motorola Forward LSB则以低位LSB为起始位。
知识补充1:什么是内存的高低地址?
如下图所示,以8个字节长度为例,Byte0为低字节,Byte7为高地址。
知识补充2:什么是高低字节?
比如说对于0xFF22来说,FF就叫做数据的高字节部分,22就是低字节部分。
知识补充3:什么是MSB和LSB?
MSB(most significant bit)即最高有效位,LSB(least significant bit)即最低有效位。字节计算就是从LSB到MSB的计算过程。