我遇到CRC问题。我在十六进制中的消息是: 80 00 00 03 一个crc f5 1f 。我想,多项式是0x1021(crc-ccitt kermit)。如何找出正确的多项式是什么?我怎么看,如果我需要它反转,如果初始值是0xffff或0x0000或其他什么?如何计算我正在搜索的多项式?我是否必须将 80 00 00 03 和 f5 f1 转换为BIN,然后将它们分开? 我试图用prog reveng 来表达自己,但那并没有成功。也许是因为我没有所有的params -.-
我找到了一个php-function HERE
但这不会为我计算正确的金额。也许它不是那个php-function
中的CRC-CCITT KERMIT答案 0 :(得分:1)
0x1ff5
确实是80 00 00 03
的CRC-CCITT(Kermit)。 (它显然以流中的小端顺序存储。)
您找到的PHP代码适用于 false " CRC-CCITT",您可以在RevEng目录here中找到它。
true CRC-CCITT(Kermit)参数为here in that catalog。这些位是相反的,因此您使用反转的多项式0x8408
,然后将位向下移位而不是向上移位。初始寄存器内容为零,并且没有最终的异或 - 。