如何解决如何将字节转换为十六进制?
我需要通过串行发送一些数据,但在发送之前,我需要使用模 256 计算校验和。我可以计算校验和并将其显示为十六进制值(在这种情况下,校验和为 {{1 }}) 但它显示为 0xb3
但我需要它是 0xb3
因为我在它之前发送其他消息。
我尝试过编码、字节和字节数组,但无法得到它发送的十六进制值。它将 \xb3
作为字符串发送。
'0xb3'
完整字符串的输出是 def calculate_csum(message):
message = b'\x60\x08\x46\x52\x41\x50\x5a\x45\x52\x31' #just temp
j = 0
for i in message:
j = j + i
csum = hex(j % 256)
csum = csum.encode("ascii")
print(csum)
full_string = message + csum
print (full_string)
return csum
但如果我用 b'\x08FRAPZER10xb3'
对其进行硬编码,我得到 b'\x60\x08\x46\x52\x41\x50\x5a\x45\x52\x31\xb3'
它可以工作,所以我需要删除 b'\x08FRAPZER1\xb3'
并替换它与0xb3
。
解决方法
无需通过循环将 csum
转换为字符串然后再转换回字节字符串,您首先希望它是单个字节。
csum = bytes([j % 256])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。