标题:
CRC16节约空间的计算方法
[打印本页]
作者:
kerty80
时间:
2018-5-17 17:05
标题:
CRC16节约空间的计算方法
// 计算CRC16的值
unsigned short CRC16(unsigned char *nData, unsigned short wLength)
{
unsigned short static const CRC16tbl[16]={ // CRC余式表
0x0000,0xCC01,0xD801,0x1400,0xF001,0x3C00,0x2800,0xE401,
0xA001,0x6C00,0x7800,0xB401,0x5000,0x9C01,0x8801,0x4400
};
unsigned short wCRCWord=0xffff;
unsigned char da;
while(wLength--)
{
da = wCRCWord^*nData;
wCRCWord >>= 4;
wCRCWord ^= CRC16tbl[da&0x0f];
da = wCRCWord^((*nData)>>4);
wCRCWord >>= 4;
wCRCWord ^= CRC16tbl[da&0x0f];
nData++;
}
return wCRCWord;
}
作者:
little4_su
时间:
2018-11-5 13:17
待校验的信息流
unsigned char c[] = {0x55,0xAA,0x00,0x01,0x04,0x15,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
用这个函数校验出来的结果是0x3c34,这是正确的。
其实我更想知道CRC16tbl[16]这张表示如何来的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1