Python CRC8计算

时间:2018-09-18 16:59:42

标签: python crc

我有一些字节想在python中计算CRC8。

我没有这种经验,但是从我的设备的技术规格来看,我知道此计算必须使用0x07多项式和0x00初始化进行。

我们来看一个用例。我收到了以下字节列表,其中我知道最后一个是CRC:

0x00 0x11 0x23 0x32 0x1C 0xAC 0x23 0x3F 0x25 0x47 0x3D 0xB7 0xE2 0xC5 0x6D 0xB5 0xDF 0xFB 0x48 0xD2 0xB0 0x60 0xD0 0xF5 0xA7 0x10 0x96 0xE0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xC5 0x8A

现在,我如何计算我这边的CRC,以检查它是否对应于0x8A?

我进行了一些研究,并尝试了crcmodcrc8libscrc等不同的python模块,但我无法使它们正常工作:有时我有一个{{ 1}}在控制台上出错!

我也尝试了以下代码,但似乎没有返回我认为正确的CRC(0x8a):

MemoryError

我做错了什么?

有没有可以帮助我的经验的人?也许发布了一段代码,我可以用它来进行计算?

但是,任何帮助将不胜感激! 非常感谢您的支持...

2 个答案:

答案 0 :(得分:2)

0x8a对应于标准CRC-8:

width=8  poly=0x07  init=0x00  refin=false  refout=false  xorout=0x00  check=0xf4  residue=0x00  name="CRC-8"

您链接到的Python crc8可以完全满足您的要求。

例如(在Python 3中):

hash.update(b'\x00\x11\x23\x32\x1C\xAC\x23\x3F\x25\x47\x3D\xB7\xE2\xC5\x6D\xB5\xDF\xFB\x48\xD2\xB0\x60\xD0\xF5\xA7\x10\x96\xE0\x00\x00\x00\x00\x00\x00\x00\x00\xC5')
print(hash.hexdigest())

给予:

8a

如果在数据中包含8a,则结果为零。

答案 1 :(得分:0)

导入crc8

hash = crc8.crc8()hash.update(“ 001123321CAC233F25473DB7E2C56DB5DFFB48D2B060D0F5A71096E00000000000000000C5” .decode(“ hex”)) 打印(hash.hexdigest())

  
    

8a