在QT项目中添加一个CRC校验,判断数据是否正确:
博主这里使用CRC16 来举例子
quint16 MainWindow::CalcCRC16(quint8 *SC_Buffer, quint8 SC_Amount)//生成校验码
{
quint16 Crc;
quint8 n, m, x;
Crc= 0xFFFF;//16个1
m= SC_Amount;//拿到长度
x= 0;
while(m>0){
Crc ^= SC_Buffer[x];//第一个数据帧异或
for(n=0; n<8; n++){//因为是quint8是8位数据,所以循环8次
if(Crc & 1){//移出位为1,就进行异或
Crc >>= 1;
Crc ^= 0xA001;
}else//为0继续移出
Crc >>= 1;
}
m--;//下一个数据帧
x++;
}
x = Crc>>8;//拿到高8位
Crc <<= 8;//剩下低8位
Crc &= 0xff00;//低位清0
Crc |= x;//实现高低位位置互换
return Crc;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43491568/article/details/103022456
————————————————