CRC 校验
CRC使用模2除法进行计算,相当于XOR运算,不产生进位和借位。
生成多项式是CRC校验中使用到的除数,例如:
g(x)= x^5 + x^3 + x^1 +1
表示这个二进制的第5位、第3位、第1位和第0位的二进制均为1,其它位均为0,即二进制表示为:101011。
步骤:
下面的除法均为模2除法,不产生进位和借位。
- 首先选择一个除数,一般是用多项式表示,称为生成多项式,假设为k位。
- 在需要处理的数据字段(假设为m位)后加上
k-1
位的0,然后用这个新帧去除以除数(生成多项式),余数就是该帧的CRC校验码。 - 在数据字段后面加上CRC校验码,这样就完成了CRC校验。发送给接收方(m+k-1位)。
- 对于接收方,将收到的数据除以除数(生成多项式),如果余数为0则校验通过。
snippet
import zlib
hex(zlib.crc32(b'hello-world') & 0xffffffff)