19,502
社区成员
发帖
与我相关
我的任务
分享
//这个可以产生计算crc查表法使用对应多项式的数组。
void GetTable( unsigned int poly )
{
unsigned int crc;
for (unsigned int i = 0; i < 256; i++)
{
crc = i;
for (int j = 8; j > 0; j--)
{
if ((crc & 0x1) == 0x1)
crc = (crc >> 1) ^ poly;
else
crc >>= 1;
}
m_crcTable[i] = crc;
}
}
//下面是查表法的关键代码
while (len > 0)
{
crc = ((crc >> 8) ^ m_crcTable[(crc ^ data[index]) & 0xff]);
index++;
len--;
}
m_crcTable 就是查的表,data是数据
上面用的算法跟你的相反。所以0x8005,要转成0xa001传入gettable中。