/CRC16_MODBUS:多项式x16 x15 x5 1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0x0000异或 unsigned short do_crc(unsigned char *ptr, int len){ unsigned int i; unsigned short crc = 0xFFFF; //crc16位寄存器初始值
while(len--) { crc ^= *ptr ; for (i = 0; i < 8; i) { if (crc & 1) crc = (crc >> 1) ^ 0xA001; //多项式 POLY(0x8005)的高低位交换值,这是由于其模型的一些参数决定的 else crc = (crc >> 1); } }
return crc;}
评论