CRC-8软件实现
以多项式G(X) = X^8+X^2+X^1+1来实现。
#define FACTOR (0x107 & 0xFF) //多项式因子(取低8bit)
unsigned char calcCRC(unsigned char *pdat, unsigned int len)
{
unsigned char j;
unsigned char crc = 0x00;
while(len--)
{
crc ^= (*pdat++);//前一字节计算CRC后的结果异或上后一字节,再次计算CRC
for (j=8; j>0; j--)
{
crc <<= 1;
if (crc & 0x80)//高位为1,需要异或;否则,不需要
{
crc ^= FACTOR;
}
}
}
return crc;
}
|