获取附加值的最低字节

Get lowest byte of added values

抱歉,如果这听起来令人困惑,但我有一个 GPS 导航单元,它通过 UDP 发送 72 字节的数据包。根据GPS的手册,72字节数据包的第22字节是迄今为止验证数据包完整性的第一个校验和。有人告诉我,我需要将前 21 个字节的值相加,并将该答案的最低字节与校验和进行比较。如果值匹配,则数据包到目前为止有效。

为此,我编写了添加前 21 个字节的 C++ 代码

checksum = ((unsigned char) buf[0] + (unsigned char) buf[1] + (unsigned char) buf[2] + (unsigned char) buf[3] + (unsigned char) buf[4] + (unsigned char) buf[5] + (unsigned char) buf[6] + (unsigned char) buf[7] + (unsigned char) buf[8] + (unsigned char) buf[9] + (unsigned char) buf[10] + (unsigned char) buf[11] + (unsigned char) buf[12] + (unsigned char) buf[13] + (unsigned char) buf[14] + (unsigned char) buf[15] + (unsigned char) buf[16] + (unsigned char) buf[17] + (unsigned char) buf[18] + (unsigned char) buf[19] + (unsigned char) buf[20] + (unsigned char) buf[21])

我的问题是:如何获得它的最低 8 位以便与字节 22 进行比较?

感谢 Micheal Petch 的评论,我只需要将值与 0xff 进行 AND 运算即可获得最低的 8 位。

& 0xff;