0

我对 CRC 有疑问。我的十六进制消息是:80 00 00 03并且 crc 是f5 1f。我想,多项式是 0x1021 (crc-ccitt kermit)。如何找出正确的多项式是什么?我怎么能看到,如果我需要它反转,如果初始值是 0xffff 或 0x0000 或其他什么?如何计算我正在搜索的多项式?我是否必须将80 00 00 03f5 f1转换为 BIN 然后将两者分开?我试图用 prog reveng 来说服自己但这并不成功。也许是因为我没有所有参数-.-

我在这里找到了一个 php 函数

但这不会为我计算出正确的金额。也许在那个 php 函数中不是 CRC-CCITT KERMIT

4

1 回答 1

1

0x1ff5确实是 CRC-CCITT (Kermit) 的80 00 00 03。(它显然以小端顺序存储在您的流中。)

您找到的 PHP 代码用于错误的“CRC-CCITT”,您可以在此处的 RevEng 目录中找到该代码。

真正的CRC-CCITT (Kermit) 参数在该目录中。这些位是反转的,因此您使用反转的多项式0x8408,并且您将位向下而不是向上移动。初始寄存器内容为零,没有最终异或。

于 2016-10-13T13:52:53.597 回答