至少在 Python (3) 中,如果二进制值具有 ASCII 表示,则会显示它而不是十六进制值。例如,67ASCII的二进制值C如下所示:
bytes([67]) # b'C'
Run Code Online (Sandbox Code Playgroud)
而对于没有 ASCII 表示的二进制值,它们以十六进制显示。IE
b'\x0f'
Run Code Online (Sandbox Code Playgroud)
有没有办法强制 Python 以二进制十六进制形式显示二进制值(如果这就是所谓的),即使有 ASCII 表示?
编辑:我的意思是,以 , 开头的东西b'\x'。例如,当您寻找要打印的特定字节时,这将使调试更容易。
谢谢
安装我的软件包后,all-escapes将有一个新的编解码器可用于此用途。
>>> b = bytes([10,67,128])
>>> print(b.decode("all-escapes"))
\x0a\x43\x80
Run Code Online (Sandbox Code Playgroud)
没有特定的方法要求\x字节字符串具有任何特定的格式(例如 )。如果您确实需要特定的格式,您可以使用类似于此问题.hex()的解决方案,但用其他代码包装它以插入您需要的格式。另一个有用的工具是内置函数。例如,如果您想要:hex\x
>>> x = bytes([67, 128])
>>> print(''.join(r'\x'+hex(letter)[2:] for letter in x))
\x43\x80
Run Code Online (Sandbox Code Playgroud)
如果您只需要能够在视觉上区分字节,则 usinghex本身可能适合您(它使用0x而不是\x):
>>> print(''.join(hex(letter) for letter in x))
0x430x80
Run Code Online (Sandbox Code Playgroud)
没有办法使它成为字节字符串的默认行为。无论你做什么,你都必须编写代码来指定你想要的显示格式;你不能让Python自动将可打印字节显示为\x转义符。
| 归档时间: |
|
| 查看次数: |
5442 次 |
| 最近记录: |