CRC校验方法的实现

 

1,确定收发双方所使用的校验位数(由收发双方自定义)

     如1个字节的为CRC-8校验,2字节为CRC-16校验,4字节为CRC-32校验。

2,确定除数(生成多项式)

     根据校验字节数,确定某个除数G(x),这个除数一般以二进制形式表示,如果选择CRC-8校验,除数需要8位以内,CRC-16需要16位以内,同理CRC-32需要32位以内的除数。例如,CRC-8校验G(x)选择为 0b00001010,则G(x) = x^3 + x^1 + x^0,我们又称这个多项式为CRC校验的生成多项式。

      虽然生成多项式可以自定义,不过选择适当的多项式可以把校验的出错概率降到最低,经过砖家们的论证,已经有一些多项式被用来做标准,以降低数据传输时出错的概率,可以百度一下CRC标准多项式。标准多项式中,最高位和最低位必须为1,如下图:

 

3,标准生成多项式G(x) = x8+x5+x4+1 最高次幂为8(R),把需要做校验的数据C左移8(R)位(低位补0)得到数据C(x)。

4,把C(x)对G(x)做模2除法运算,得到的余数SUM(余数位数必须是多项式最高次幂8(R),位数不够高位补0)便是CRC校验和。 C+SUM便是CRC校验后的数据。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章