显示所有字节的十六进制值,即使存在 ASCII 字符
- 2025-04-10 09:45:00
- admin 原创
- 17
问题描述:
至少在 Python (3) 中,如果二进制值具有 ASCII 表示,则会显示该值而不是十六进制值。例如,67
其 ASCII的二进制值C
显示如下:
bytes([67]) # b'C'
而对于没有 ASCII 表示的二进制值,则以十六进制显示。IE
b'x0f'
有没有办法强制 Python 以二进制十六进制形式显示二进制值(如果这是它的名称的话),即使有 ASCII 表示?
编辑:我的意思是,以 , 开头的东西b'x'
。例如,当您寻找要打印的特定字节时,这将使调试更容易。
谢谢
解决方案 1:
安装我的软件包后,all-escapes
将会有一个新的编解码器可供使用。
>>> b = bytes([10,67,128])
>>> print(b.decode("all-escapes"))
x0ax43x80
解决方案 2:
没有特定的方法要求x
字节字符串进行任何特定的格式化(如)。如果你真的需要特定的格式,你可以使用类似于这个问题.hex()
的解决方案,但用其他代码包装它以插入你需要的格式。另一个有用的工具是内置函数。例如,如果你想要:hex
`x`
>>> x = bytes([67, 128])
>>> print(''.join(r'x'+hex(letter)[2:] for letter in x))
x43x80
如果您只是需要能够直观地区分字节,hex
那么单独使用可能适合您(它使用0x
而不是x
):
>>> print(''.join(hex(letter) for letter in x))
0x430x80
没有办法将此作为字节字符串的默认行为。无论你做什么,你都必须编写代码来指定你想要的显示格式;你不能让 Python 自动将可打印字节显示为x
转义符。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD