uint16_t crc = 0xFFFF;uint8_t i; while (len--) { crc ^= *data++; for (i = 0; i < 8; i++) { if (crc & 0x0001) { crc >>= 1; crc ^= 0xA001; } else { crc >>= 1; } } } return crc; } 这个函数接受一个数据缓冲区data和数据长度len,并返回计算得到的CRC16校验值。
CRC16_X25:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0xFFFF异或。 CRC16_MODBUS:多项式x16+x15+x2+1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0x0000异或。 CRC16_IBM:多项式x16+x15+x2+1(0x8005),初始值0x0000,低位在前,高位在后,结果与0x0000异或。 CRC16_MAXIM...
C语言实现的CRC16CCITT-FALSE校验码函数
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};/*输入:待校验的数据首地址+长度 输出:校验和*/ uchar CRC_VAL(uchar *buf,uchar len){ uchar i,crcdat = 0;for(i = 0; i<len; i++)crcdat = CRCTable[*(b...
校验码的计算多项式为:(X16 + X15 + X2 + 1)具体CRC16码的计算方法是:预置1个16位的寄存器为...