微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将字节转换为十六进制?

如何解决如何将字节转换为十六进制?

我需要通过串行发送一些数据,但在发送之前,我需要使用模 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 举报,一经查实,本站将立刻删除。