我使用以下函数生成CRC和,与在线CRC-CCITT计算器相比,它似乎没有返回相同的校验和.
此函数专门使用XMODEM CRC生成,其中0x8408多项式的初始fcs为0xFFFF.
uint16_t crc16(uint8_t byte, uint16_t fcs)
{
uint8_t bit;
for(bit=0; bit<8; bit++)
{
fcs ^= (byte & 0x01);
fcs = (fcs & 0x01) ? (fcs >> 1) ^ 0x8408 : (fcs >> 1);
byte = byte >> 1;
}
return fcs;
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?如果我发送0xFF或0x00,我得不到与http://depa.usst.edu.cn/chenjq/www2/SDesign/JavaScript/CRCcalculation.htm相同的校验和
printf("%04X\n", crc16(0x31, 0xFFFF)); //returns 2F8D
Run Code Online (Sandbox Code Playgroud)