1 回答

TA貢獻1799條經驗 獲得超6個贊
您所看到的正是 Python 默認顯示字節字符串的方式。當字節表示可打印的 ASCII 字符 (32-126) 時,字節字符串將顯示為 ASCII。不可打印字節顯示為\xnn其中nn是字節的十六進制值。
還有其他方法可以訪問具有不同默認顯示方法的字節:
>>> b=bytearray()
>>> b.append(32) # 32 is the ASCII code for a space.
>>> b
bytearray(b' ')
>>> b.append(48) # 48 is the ASCII code for a zero.
>>> b
bytearray(b' 0')
>>> b.append(1) # 1 is an unprintable ASCII code.
>>> b
bytearray(b' 0\x01')
>>> b.hex() # display the 3-byte array as only hexadecimal codes
'203001'
>>> b[0] # display the individual bytes in decimal
32
>>> b[1]
48
>>> b[2]
1
>>> list(b)
[32, 48, 1]
如果您想要與默認顯示不同的顯示,請編寫一個函數并對其進行自定義。例如,這與現有的默認值類似bytearray,但將所有字節打印為\xnn轉義碼:
>>> def display(b):
... return "bytearray(b'" + ''.join([f'\\x{n:02x}' for n in b]) + "')"
...
>>> print(display(b))
bytearray(b'\x20\x30\x01')
添加回答
舉報