1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
您所看到的正是 Python 默認(rèn)顯示字節(jié)字符串的方式。當(dāng)字節(jié)表示可打印的 ASCII 字符 (32-126) 時(shí),字節(jié)字符串將顯示為 ASCII。不可打印字節(jié)顯示為\xnn其中nn是字節(jié)的十六進(jìn)制值。
還有其他方法可以訪問具有不同默認(rèn)顯示方法的字節(jié):
>>> 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]
如果您想要與默認(rèn)顯示不同的顯示,請編寫一個(gè)函數(shù)并對其進(jìn)行自定義。例如,這與現(xiàn)有的默認(rèn)值類似bytearray,但將所有字節(jié)打印為\xnn轉(zhuǎn)義碼:
>>> def display(b):
... return "bytearray(b'" + ''.join([f'\\x{n:02x}' for n in b]) + "')"
...
>>> print(display(b))
bytearray(b'\x20\x30\x01')
添加回答
舉報(bào)