【问题标题】:C# Check Sum CRC16 CCITTC# 校验和 CRC16 CCITT
【发布时间】:2021-08-12 12:01:13
【问题描述】:

虽然我按照计算校验和 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 手册示例:

手动命令示例:

【问题讨论】:

    标签: c# checksum crc16


    【解决方案1】:

    只需将 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]);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2016-02-04
      • 2013-10-21
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多