CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
CRC码有多种校验位数,8位,16位,32位等,原理一样。在现场用到的是CRC16。16位CRC码产生规则,先将发送的二进制序列左移16位(即乘以2的16次方),除以一个多项式,最后所得的余数就是CRC码。
求CRC码采用的是模2运算法则,多项式除法中采用不带错位的减法运算,运算等同于异或运算。
下面是生成CRC16码代码: