首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python CRC8计算

Python CRC8计算
EN

Stack Overflow用户
提问于 2018-09-19 00:59:42
回答 2查看 10.9K关注 0票数 7

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

我没有这样的经验,但我知道,从我的设备的技术规格,这个计算必须使用0x07多义名和0x00初始化。

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

代码语言:javascript
复制
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模块,如crcmodcrc8libscrc,但我无法使它们工作:有时我在控制台上遇到MemoryError错误!

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

代码语言:javascript
复制
import crc8
hash = crc8.crc8()
hash.update("0x001123321CAC233F25473DB7E2C56DB5DFFB48D2B060D0F5A71096E00000000000000000C58A".encode('utf-8'))
print( hash.hexdigest() )

我哪里做错了?

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-09-20 14:19:04

0x8a对应于标准的CRC-8:

代码语言:javascript
复制
width=8  poly=0x07  init=0x00  refin=false  refout=false  xorout=0x00  check=0xf4  residue=0x00  name="CRC-8"

您链接到的Python crc8将完全执行您想要的操作。

例如(在Python 3中):

代码语言:javascript
复制
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())

提供:

代码语言:javascript
复制
8a

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

票数 7
EN

Stack Overflow用户

发布于 2019-06-13 16:56:14

代码语言:javascript
复制
import crc8

hash = crc8.crc8()
hash.update("001123321CAC233F25473DB7E2C56DB5DFFB48D2B060D0F5A71096E00000000000000000C5".decode("hex"))
print( hash.hexdigest() )

输出:

代码语言:javascript
复制
8a
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52391412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档