我需要能够计算一个CRC,以便与一台机器通信。我很新计算CRC的,所以我很抱歉,如果这个确切的问题已经得到了回答,因为我不知道我在寻找什么。无论如何,我需要用Python计算一个CCIT 16位CRC。我的消息是一个二进制流,如下所示:
b'G18M1314D4417,2511165'消息还以STX开头,以ETX字符结尾。我尝试使用这 Python模块:
import crc16
print(crc16.crc16xmodem(b'G18M1314D4417,2511165'))返回:
61154当正确的儿童权利委员会是:
A855我遗漏了什么?
编辑:我正在使用Python3.3。我从机器发出的一条信息中得到了正确的CRC。我不确定是否应该包含STX/ETX字符,因为我以前从未使用过CRC的字符。
发布于 2014-08-01 15:21:35
我相信你的机器正在使用一种参数化的CRC算法,名为CRC-16/MCRF4XX。
您可以使用crcmod模块,该模块可以与pip一起安装。可以使用预定义算法crc-16-mcrf4xx计算CRC。在CRC计算中应包括STX和ETX。
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'https://stackoverflow.com/questions/25080488
复制相似问题