RC的计算原理是将欲传输的数据块视为一堆连续位所构成的整个数值,将此数值除以一个特定的除数,此除数称为生成多项式(ANSI CRC-16的生成多项式为:x16 + x15 + x2 + 1)。目前较常用的CRC位数目有8和16以及32,附件所附的是在Win32测试过的程序,希望有所帮助。当然有需求的话我可以提供部分源代码。
具体算法如下:
1、定义一个初始值为0xFFFF的16位的变量,该变量称为CRC寄存器
2、把欲发送或接收消息的高8位和CRC寄存器的底8位作异或运算,并把结果在赋到CRC寄存器。
3、CRC寄存器右移1位,同时最高位添零。取出并检查最低位是否为1。
4、如果为1,则CRC寄存器与多项式0xA001异或;如果为0,则重复第3步。
5、重复3和4直到完成了8次移位。这样完整的8位字节将完成处理了。
6、对于下一个8位字节的处理就是重复第2步到第5步了
7、把所有的欲发送或接收消息这样处理后, CRC寄存器里的值就是我们最终需要得到的CRC校验码。
评论5
最新资源