我正在尝试与某些系统交互,并且在他们的规范中,他们需要计算 CRC 16 以进行串行通信。这是文档的摘录
“使用标准多项式 X16 +X12 +X5 +1 的消息的 16 位 CCITT CRC。种子值始终为 0(零)”
首先,我只找到了 2-3 个 C# 代码示例,它们似乎都没有给我正确的值。我试过这个http://www.sanity-free.com/133/crc_16_ccitt_in_csharp.html,但我不确定为初始值设置什么。我尝试了零,但仍然无法正常工作。
我正在测试它的数据是:
0x00 0x09 0x10 0x01 0x01 0x7C 0xF4 0xB8 0x00,
我得到的CRC值是
0xF2 0x24,
但是他们的系统说应该是
0xC0 0x2F
我的理解是多项式 x16 + x12 + x5 + 1 = 0x11021,但是即使我在代码中使用这个,它仍然给我错误的答案。我究竟做错了什么?