編碼結果不正確我試圖通過 encode() 將字符串轉換為十六進制格式的字節,但失敗了。下面是我的代碼,我預計 \xFF 會變成 \xFF ,但最終結果是 \xc3。我可以知道為什么嗎?輸入: x ="\x00\x00\xFF\x00\xFF\x00"輸入: x.encode()輸出: b'\x00\x00\xc3\xbf\x00\xc3\xbf\x00'
2 回答

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
string.encode() 的默認編碼是 UTF-8。UTF-8 使用數字十進制代碼 0-127 作為其數值的字符進行編碼。它將大于 127 的值編碼為兩個或更多字節,具體取決于被編碼的字符。
0 的 UTF-8 編碼是 0。'\xFF'(255) 的 UTF-8 編碼是 '\xc3\xbf'。
因此,如果您將該輸入中的 6 個字節中的每一個都替換為 UTF-8 編碼,您將獲得輸出。

三國紛爭
TA貢獻1804條經驗 獲得超7個贊
如果你想要等效的字節對象,而不是編碼的字符串,你可以這樣得到:
>>> x ="\x00\x00\xFF\x00\xFF\x00"
>>> bytes(x, 'latin-1')
b'\x00\x00\xff\x00\xff\x00'
添加回答
舉報
0/150
提交
取消