gpt4 book ai didi

python - 从 python 中的位和生成校验和

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:29 25 4
gpt4 key购买 nike

我正在尝试使用 python 通过 RS232 控制冷水机。我坚持按照以下方法的要求生成校验和。

“校验和是两个 ASCII 十六进制字节,表示以 sor 开头的命令的所有前面字节总和的最低有效 8 位。”

本例中的“sor”(以字节为单位)是“2E”。

-示例
例如,PC 要求将冷却器模式设置为“待机”。它将传输以下字节序列。2E 47 30 4135 0D

请注意,2Eh 是 header 的开始(“.”),47h 是命令(“G”),30h 是将模式设置为待机的限定符。 41h 和 35h 是表示“A5”的 ASCII 十六进制的校验和字节,它是 2Eh + 47h + 30h 之和的最低有效字节,0Dh 是回车符。

有人知道如何生成校验和字节4135吗?

谢谢!!

最佳答案

您可以找到十六进制的总和:

>>> hexsum = hex(0x2e + 0x47 + 0x30)[2:].upper()
>>> hexsum
'A5'

(前面的0xsliced[2:]关闭)

然后你可以得到十六进制字符的ASCII值:

>>> bytes = [hex(ord(c))[2:] for c in hexsum]
>>> bytes
['41', '35']

(再次,从每个元素中删除正面 0x)

然后你就可以join他们在一起:

>>> checksum = ''.join(bytes)
>>> checksum
'4135'

或者一切都可以用这句话来完成:

>>> ''.join(hex(ord(c))[2:] for c in hex(0x2e + 0x47 + 0x30)[2:].upper())
'4135'

关于python - 从 python 中的位和生成校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44611057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com