python—计算包含整数的消息的crc

lnxxn5zx  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(212)

我正在尝试用python创建一个crc计算器。我需要在我的消息中发送的值是整数,并且有很多可以连接。我是一个非常新的转换值的类型。。。以下是我的信息结构:

SendData = 82
param0 = 20
param1 = 3
param2 = 7
param3 = 12
param4 = 2
param5 = 5
param6 = 2

message = Send(SendData, param0, param1, param2, param3, param4, param5, param6)

如您所见,我的消息的所有参数在构造之前都已初始化:

def Send(address, param0, param1, param2, param3, param4, param5, param6):

    SendStatus = False
    ReceiveStatus = False

    SendData=""
    SendData= SendData + hex(address)[2:].zfill(2)
    SendData= SendData + hex(param0)[2:].zfill(2)
    SendData= SendData + hex(param1)[2:].zfill(2)
    SendData= SendData + hex(param2)[2:].zfill(2)
    SendData= SendData + hex(param3)[2:].zfill(2)
    SendData= SendData + hex(param4)[2:].zfill(2)
    SendData= SendData + hex(param5)[2:].zfill(2)
    SendData= SendData + hex(param6)[2:].zfill(2)

    print(SendData)

    return SendData

在这里,我尝试将所有整数转换为它们的十六进制值,并在使用zfill(2)时将它们放在一个字符串中,以便将所有十六进制都保留为2个数字(2个字节)。
最后,这里是我用来计算crc的:

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

所以这不起作用 message 不是“编码的”。但从技术上来说, message 是字符串。我在不同的帖子上尝试了很多不同的解决方案,很明显每次,我都在尝试发送信息 crcmod 不是“编码的”。但我不想 crcmod 以ascii格式计算字符串的crc,但计算整个十六进制消息的crc。你有关于如何继续的建议吗?或者我做错了什么?
下面是我尝试的解决方案之一,以便将int转换为ascii字符,然后将字符串发送到 crcmod : https://www.kite.com/python/answers/how-to-convert-a-string-from-hex-to-ascii-in-python
但是在上面的链接中,这个例子是可行的,但是只要添加一个六进制字母(a到f),它就会崩溃,因为decode函数不能用一个字母来解码字节。
提前感谢您的帮助!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题