C# 校验和 CRC16 CCITT

C# Check Sum CRC16 CCITT

虽然我是按照计算校验和CRC16的方法来的。我无法得到用户手册显示的结果。有人可以帮忙吗?

private static UInt16 CRC16_Update(UInt16 crc, byte c)
{
    crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ c) & 0x000F)])));
    crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ (c >> 4)) & 0x000F)])));
    return crc;
}

命令格式:

CRC 手册示例:

手动命令示例:

只需将 crc 结果初始化为 0xFFFF,而不是我预期的零。 这样:

byte[] data = new byte[] { 0x3F, 0x01, 0x00, 0x01, 0x06, 0x8C, 0x00, 0x01, 0x00, 0xCD, 0x13 };
    
UInt16 crc = 0xFFFF;
for (int i = 0; i < data.Length-2; i++)
{
  crc = CRC16_Update(crc, data[i]);
}