【发布时间】:2015-04-12 02:48:50
【问题描述】:
item = '04010034587C1F0C6D51B6D33B78CA63C1CC7E5910006C5600000000000000'
'%08X' % (binascii.crc32(binascii.a2b_hex(item)) & 0xffffffff)
我无法让 crc32 给我正确的 32 位。我尝试了几种不同的算法。我一直在使用此代码获得“3228F9E4”,但根据使用的另一个程序,正确的 crc32 应该是“E42FDBEC”。多项式为“04C11DB7”,初始余数为“00000000”。
如何正确计算?
【问题讨论】:
-
您使用哪种方法来获得“正确”的 CRC,您如何假设它是正确的?
-
我在尝试重现您的结果时遇到错误,
TypeError: Odd-length string。您是否正确复制/粘贴? -
您的十六进制字符串有奇数个字符。 错了! 十六进制字节串必须有偶数个十六进制数字。您想要 CRC 的实际数据是什么? 究竟什么代码从什么输入产生
E42FDBEC?您没有提供必要的信息来回答您的问题。 -
Something 产生了
E42FDBEC。那是什么? -
我尝试了 192 种不同的 CRC 算法,使用字符串中的这 88 个十六进制,解码 44 个字节并按原样通过 CRC 进行十六进制,总共 1152 种组合,来自文件的假设行结尾等等,以及将它们与值及其字节交换版本进行匹配,但在其中任何一个中都找不到匹配项。