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

2024-09-21 03:07:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过串行发送一些数据,但在发送之前,我需要使用模256计算校验和。我可以算出校验和并将其显示为十六进制值(在本例中,校验和为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并用\xb3替换它


Tags: 字符串message编码字节校验x60x46x41

热门问题