1、 CRC8标准生成多项式
CRC-8 x8+x5+x4+1 0x31(0x131)
CRC-8 x8+x2+x1+1 0x07(0x107)
CRC-8 x8+x6+x4+x3+x2+x1 0x5E(0x15E
2.以下都以x8+x5+x4+1为例
先计算第一个字节的crc结果,然后把第一个字节的crc结果与第二个字节进行异或,
异或后的值再进行一次crc计算就可以了,多个字节也是反复这过程就好,如下为多个字节
的crc校验代码:
unsigned char crc_high_first(unsigned char ptr, unsigned char len)
{
unsigned char i;
unsigned char crc=0x00; / 计算的初始crc值 */
while(len--)
{
crc ^= *ptr++; /* 每次先与需要计算的数据异或,计算完指向下一数据 */
for (i=8; i>0; --i) /* 下面这段计算过程与计算一个字节crc一样 */
{
if (crc & 0x80)
crc = (crc << 1) ^ 0x31;
else
crc = (crc << 1);
}
}
return (crc);
}
上面的crc计算是纯采用逻辑运行的方式,可以看到,需要的运行量也是不少的,每一个字节
都需要进行8次判断、移位