- 一个消息是以N字节(byte)的形式发送的,下面将以含有8字节的消息作为例子进行说明。一个字节包含8比特的二进制数。其他具体的定义内容这里不做解释。
- 大小端序的区别:简单讲就是信号的起始位置和读取顺序(方向)不同下图,但是信号在一条信息中存储的物理位置是相同的。
- 【说明】各种方法的起始位置均为bit_0,byte_0,读取方向均按比特和字节增大方向进行。
1. 大端序(Big-Endian)
byte \ bit | bit_0 | bit_1 | bit_2 | bit_3 | bit_4 | bit_5 | bit_6 | bit_7 |
---|---|---|---|---|---|---|---|---|
byte_0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
byte_1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
byte_2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
byte_3 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
byte_4 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
byte_5 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
byte_6 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |
byte_7 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
起始位置0,终止位置63,方向:左→右∪上→下
(↘)
2. 小端序 (Little-Endian、Intel方式)
byte \ bit | bit_7 | bit_6 | bit_5 | bit_4 | bit_3 | bit_2 | bit_1 | bit_0 |
---|---|---|---|---|---|---|---|---|
byte_0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
byte_1 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
byte_2 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
byte_3 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
byte_4 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
byte_5 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
byte_6 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 |
byte_7 | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 |
起始位置0,终止位置63,方向:右→左∪上→下
(↙)
3. Motorola Back方式
byte \ bit | bit_7 | bit_6 | bit_5 | bit_4 | bit_3 | bit_2 | bit_1 | bit_0 |
---|---|---|---|---|---|---|---|---|
byte_7 | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 |
byte_6 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 |
byte_5 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
byte_4 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
byte_3 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
byte_2 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
byte_1 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
byte_0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
起始位置0,终止位置63,方向:右→左∪下→上
(↖)
4.例子
对于同一个信号(黄色区域)采取三种不同的读取方式结果如下:
1.大端序(Big-Endian)
- 起始位置:第20比特(2byte,4bit)
- 长度:14bit
将上述信号转换为小端序读取就会变成:
2. 小端序 (Little-Endian、Intel方式)
- 起始位置:第16比特(2Byte,0bit)
- 长度:4bit+8bit+2bit(不连续的三段)
将上述信号转换为Motorola Back方式读取就会变成:
3.Motorola Back方式
- 起始位置:第30比特(3Byte,6bit)
- 长度:14bit
以上为自己的理解,如有不对的地方请留言指出谢谢
最终更新2023/03/29