fen*_*222 7 .net c# serial-port crc crc16
我正在尝试与某些系统接口,并且在他们的规范中,他们需要计算用于串行通信的CRC 16.以下是文档摘录
"利用标准多项式的消息的16位CCITT CRC,X16 + X12 + X5 + 1.种子值始终为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,
Run Code Online (Sandbox Code Playgroud)
我得到的CRC值是
0xF2 0x24,
Run Code Online (Sandbox Code Playgroud)
但他们的系统说它应该是
0xC0 0x2F
Run Code Online (Sandbox Code Playgroud)
我的理解是多项式x16 + x12 + x5 + 1 = 0x11021,但即使我在代码中使用它,它仍然给我错误的答案.我究竟做错了什么?
fen*_*222 10
我想到了.我不得不使用CRC16-CCITT Kermit实现.我认为他们的文档需要更新,因为它使用不同的多项式.
http://www.sanity-free.com/147/standard_crc16_and_crc16_kermit_implementation_in_csharp.html