计算CRC32C(Castagnoli)使用生成多项式1EDC6F41h遵循Python中的Rocksoft模型CRC算法

时间:2015-11-26 06:45:54

标签: python crc32

我确实探索过Crcmod python库但不能使用它作为我的gen poly-0x1EDC6F41不被认为是32位多边形:(有没有办法调整它或任何其他我可以用来做这个的python库?

名称:“CRC-32C”

宽度:32

Poly:1EDC6F41h

初始值:FFFFFFFFh

RefIn:True

RefOut:True

XorOut:FFFFFFFFh

检查:E3069283h

这是我试过的 -

import crcmod
f = crcmod.mkCrcFun(0x1EDC6F41)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\Lib\site-packages\crcmod\crcmod.py", line 281, in mkCrcFun
    (sizeBits, initCrc, xorOut) = _verifyParams(poly, initCrc, xorOut)
  File "C:\Python27\Lib\site-packages\crcmod\crcmod.py", line 405, in _verifyParams
    sizeBits = _verifyPoly(poly)
  File "C:\Python27\Lib\site-packages\crcmod\crcmod.py", line 302, in _verifyPoly
    raise ValueError(msg)
ValueError: The degree of the polynomial must be 8, 16, 24, 32 or 64

1 个答案:

答案 0 :(得分:2)

通常指定CRC多项式没有最高有效位,它始终为1.但看起来crcmod库需要指定此位。所以你应该使用多项式0x11EDC6F41。 (在左边添加1)。