最近在搞
CRC
校验,用的是
CRC16
标准,查看了很多资料发现很多讲的都是
CRC16-CCITT
标准,一直想弄明白
CRC-16
标准中的采
用查表法的方式中那两个表格中的数是如何求出来的。可惜没有一个文章仔细的讲,更没有文章给出实例来算一算。
一切只能靠自己了,谁让我喜欢寻根摸底呢。研究了一下本站会员玉丫子的文章,自己琢磨了琢磨,终于知道是怎么算出来的了。
CRC16
算法的生成多项式
x^16 + x^15 + x^2 + 1
,十六进制表示为
0x8005
。
CRC16
常见的表格中的数据是按照先传输
LSB
,消息右移进寄存器来计算的。因此需要判断寄存器的最低位
LSB
,同时要将
0x8005
按位颠倒后
(0xA001)
根据
LSB
的情况决定是否与寄存器异或即可。
CRC16
的表格中对应的数依次为
0~255
计算出来的
CRC
值,因此,此处只选取其中一两个数作为实例计算
CRC
值。
具体步骤如下所示:
1)
从
0~255
中选取需要计算的数,将其对应的十六进制数放入一个长度为
16
的