Python CRC8计算

标签 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?

我做了一些研究并尝试了不同的 python 模块,例如 crcmod , crc8libscrc但我无法让它们工作:有时我在控制台上遇到 MemoryError 错误!

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

import crc8
hash = crc8.crc8()
hash.update("0x001123321CAC233F25473DB7E2C56DB5DFFB48D2B060D0F5A71096E00000000000000000C58A".encode('utf-8'))
print( hash.hexdigest() )

我做错了什么?

有没有哪位有经验的可以帮帮我?也许发布一段我可以用来进行计算的代码?

但是,我们将不胜感激! 非常感谢您的支持...

最佳答案

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,则结果为零。

关于Python CRC8计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52391412/

相关文章:

python - 将列表整理成嵌套列表

python - Python Pandas 循环中的元组索引有问题吗?

c++ - BOOST::CRC使用process.block()方法创建校验和

java - 协作(CRC卡)

python - 如何在 Python 中对原始二进制数据使用按位运算符进行 CRC 检查?

python - 如何导入行列不规则的文本数据文件?

python - Pyspark - 计算每个数据框列中的空值数

python - 计算字母字符串的长度并转化为真/假陈述

frame - 校验和位于以太网帧中的 "physically"位置?

algorithm - 简单的错误检查以替换闪存中的重复代码