计算CRC

2024-10-03 00:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够计算一个CRC以便与机器通信。我对计算CRC是相当陌生的,所以如果这个确切的问题已经得到了回答,我很抱歉,因为我不确定我在寻找什么。总之,我需要用Python计算ccit16位CRC。我的消息是一个二进制流,看起来像:

b'G18M1314D4417,2511165'

消息也以STX开头,以ETX字符结束。我尝试使用thisPython模块:

^{pr2}$

它返回:

61154

当正确的CRC是:

A855

我错过了什么?在

编辑:我使用的是python3.3。我从机器发送的信息中得到了正确的CRC。我不确定是否应该包括STX/ETX字符,因为我以前从未使用过CRC。在


Tags: 模块机器消息编辑二进制字符crcstx
1条回答
网友
1楼 · 发布于 2024-10-03 00:24:32

我相信你的机器使用的是一个名为CRC-16/MCRF4XX的参数化CRC算法。在

您可以使用^{}模块,该模块可以与pip一起安装。可以使用预定义的算法crc-16-mcrf4xx计算CRC。STX和ETX应包括在CRC计算中。在

import crcmod
import crcmod.predfined

STX = b'\x02'
ETX = b'\x03'
data = b'G18M1314D4417,2511165'
message = STX + data + ETX

crc16 = crcmod.predefined.Crc('crc-16-mcrf4xx')
crc16.update(message)
crc = crc16.hexdigest()

>>> crc
'A855'

相关问题 更多 >