我觉得你不够认真,下面的代码,搜索,出来的网站一大堆。
计算是正确的。
unsigned int crc_chk(unsigned char* pData, unsigned char length)
{
int j;
unsigned int reg_crc=0xFFFF;
while(length--)
{
reg_crc ^= *pData++;
for(j=0;j<8;j++)
{
if(reg_crc & 0x01) /* LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0xA001;
else
reg_crc=reg_crc >>1;
}
}
return reg_crc;
}
|