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')
添加回答
举报