在做调试时,经常会遇到通信协议,但是协议中不会具体告诉你表示的十六进制是多少,而是告诉你在某个字节上某项内容取0或者1时对应的状态,这就需要我们将其进行转化。
例如,某通信协议部分内容为:

上述图片中,从 r0 到 r29 ,总共有30个字节,要知道每个字节有8位(bit)。
(1)对于帧头的 r0 和 r1 ,表示的内容分别是0x5a、0xa5,0x开头表示的就是十六进制,因此不用转化。
(2)对于字节 r2 ,位号 BIT6~BIT0表示0-100之间的二进制数,位号 BIT7为0表示“前”,为1表示''后“。对于每个字节,都有8个BIT,低四位二进制转化为一位十六进制,高四位二进制转化为一位十六进制。

(3)对于字节 r4 , BIT0和BIT1分别用A和B表示,当AB为00,表示”不动“,当AB为10,表示”下“,当AB为11时,表示”上“。仅考虑BIT0和BIT1,其他位都假设为0。

(4)对于字节 r28 ,(r2+r3+...+r27)&0xff,其实主要是r2+r3+...+r27,需要注意的是这些是十六进制相加,可以网页搜索 十六进制相加计算器。
本文讲述了在调试过程中如何将通信协议中的十六进制表示转换成二进制,并解析特定字节如r2、r4的位操作规则,以及计算如r28的组合值(十六进制相加)。
6778

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



