lixun00 发表于 2007-4-6 09:30
unsigned int cal_crc(unsigned char *pt, unsigned char len) { ...
首先应先确定CRC16的多项式。
我使用的是
多项式:CRC-CCITT=x^16+x^12+x^5+1 即:0x11021
利用多项式生成crc的生成表。表较大,不上传。
计算crc校验
unsigned int CrcCheck(unsigned char len,unsigned int *ptr)
{
unsigned int crc = 0;
unsigned char crc_H8;
while( len-- )
{
crc_H8 = (unsigned char)(crc >> 8);
crc = crc << 8;
crc = crc ^ crc_table[ crc_H8 ^ *ptr];
ptr++;
}
return crc;
}
len —要校验的字节数
*ptr —要校验的数组
这样不更简洁吗? |