案例 十六进制 大小端 协议
下面这个是协议,
协议是小端模式,一共有8个字节:
然后校验和计算的是前7个字节的数据.
数据0,数据1: 两个共同组成16位的有符号型数据.
数据2,数据3:两个共同组成16位的有符号型数据.
且都是小端模式,如果你用的单片机是stm32,那单片机的架构也是小端模式,就可以直接读取和写入.
下面是采集的一些数据:
如何从这些十六进制的数据中得到相应的十进制数据.
比如:上面图片中的一条数据: DD CC 02 2E 02 20 02 FD 这里是一组数据,
然后 2E 02是两个十六进制数据,它代表的是558
计算方法是:
上面的代码是这样的:因为读出来的十六进制是 0x2e, 0x02
又因为协议是小端,所以, 0x02是高8位; 0x2e是低8位;
然后上面程序中 %hd 输出的是 short 格式的.
关于校验和:
某个位置: DD CC 05 1E F8 4F FD 10
某个速度: DD CC 03 95 00 00 00 41
用上面的程序 把 0x1e 0xf8 带进去是:-2018
把0x95 0x00带进去是得到:-107
关于校验和,需要DD CC 05 1E F8 4F FD进行校验和,最后应该得到的是0x10
校验和采用的是CheckSum方法.
比如:
下面还有一个问题,如何把十进制,转换成16进制的指令:
short rate=10;
str[3]=(char)(rate&0xff);
str[4]=(char)((rate>>8)&0xff)