簡體   English   中英

如何將字節轉換為十六進制?

[英]How to convert byte to hex?

我需要通過串行發送一些數據,但在發送之前,我需要使用模 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

完整字符串的 output 是b'\x08FRAPZER10xb3'但如果我用b'\x60\x08\x46\x52\x41\x50\x5a\x45\x52\x31\xb3'對其進行硬編碼,我會得到b'\x08FRAPZER1\xb3'它可以工作,所以我需要刪除0xb3並將其替換為\xb3

無需 go 通過旋轉將csum轉換為字符串然后再轉換回字節字符串,您首先希望它作為單個字節。

csum = bytes([j % 256])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM