BCC校验(异或和校验)
Posted qifeng1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BCC校验(异或和校验)相关的知识,希望对你有一定的参考价值。
BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。
例如16进制数据:01 A0 7C FF 02
计算:01 xor A0 xor 7C xor FF xor 02 = 20
校验码是:20
/******************************************************************** 函数功能:异或和校验 输入参数:命令字开始的位置 输出参数: 返 回 值:校验码 修改信息: ********************************************************************/ u8 CheckOut(const void *data) { int lenth = 0; const u8 *buf = data; u8 retval = 0; lenth = 4 + (int)buf[3] + ((int)buf[2] * 256); //将buf[2] buf[3] 长度转成int my_printf("data需校验长度为:%d ",lenth); while(lenth) { retval ^= *buf++; --lenth; } my_printf("校验和%x ",retval); return retval; //返回值为校验码 放在最后一位 }
本例中传入的数据data
data[2] data[3] 是后面跟着的数据域的长度
整个参与校验的数据全部长度为lenth
返回值为得出的校验码
以上是关于BCC校验(异或和校验)的主要内容,如果未能解决你的问题,请参考以下文章