【发布时间】:2019-06-18 14:57:42
【问题描述】:
在尝试与名为 BSS London Blu-80 的音频处理设备通信时,我发现我必须发送通过异或消息创建的校验和。发送的示例消息是:
0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00 0xc2
0xc2 是该消息的正确校验和。
“校验和是消息正文中所有字节的单字节异或(xor)。”
消息体是上面减去校验和的。
我尝试的代码:
packet = '0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00'
xor = 0
i = 0
while i < len(packet):
xor = xor ^ ord(packet[i])
i += 1
>>print xor
46
>>print hex(xor)
'0x2e'
我显然在这里做错了,并没有完全理解这一点。任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
试试
packet = '\x8d\x1e\x19\x1b\x83\x00\x01\x01\x00\x00\x00\x4b\x00\x00'。 -
您可以在此处查看您的结果:th-thielemann.de/tools/checksum.html