我正在通过串行方式与一台机器通信。协议通信规范的一部分规定,控制和是“从<'PS'> (包括)到<‘CS’>的字节的算术和”。
分组消息的结构如下:
<‘PS’><‘数据’><‘CS’>,其中:
<'PS'> -数据包大小
长度:1
数值: 0x02至0x63
最大数据包长度为99字节
<' Data '> -数据
长度:1.90字节
价值: 0x00 - 0xFF
数据部分的长度取决于命令。
<'CS'> -检查和
长度-1字节
价值: 0x00 - 0xFF
示例:
ACK数据包: 0x02 0x01 0x03 ,其中0x03是校验和。
,那么如何在C++?中计算这些字节的校验和
发布于 2010-01-06 16:28:37
看起来校验和是一个简单的和,模256。
int sum = 0;
for (int j = 0; j < number_of_bytes_in_message; ++j)
sum += message [j];
sum %= 256; // or, if you prefer sum &= 255;发布于 2010-01-06 16:29:44
使用无符号8位类型(uint8_t或无符号字符)作为累加器,在生成数据包时将每个字节添加到其中,然后将其作为校验和字节发送。具体情况取决于您打算如何构造数据包。
https://stackoverflow.com/questions/2014391
复制相似问题