unsigned short CRC16_CCITT(unsigned char *puchMsg, unsigned int usDataLen)
{
;//根据CRC16的标准选择初值CRCIn的值
unsigned short wCRCin = 0x0000
unsigned short wCPoly = 0x1021;
unsigned char wChar = 0;
while (usDataLen--)
{
wChar = *(puchMsg++);
//将数据的第一个字节与CRCIn高8位异或
wCRCin ^= (wChar << 8);
for(int i = 0; i < 8; i++)
{
//判断最高位,若该位为 0 左移一位,若为 1 左移一位再与多项式Hex码异或。
if(wCRCin & 0x8000)
wCRCin = (wCRCin << 1) ^ wCPoly;
else
wCRCin = wCRCin << 1;
}//重复直至8位全部移位计算结束。
}
return (wCRCin) ;
}
CRC校验代码简单注解
最新推荐文章于 2024-03-15 09:50:51 发布