python-3.x - 在 Python 3 中打印字节时强制转义可打印字符

标签 python-3.x byte

例如,我有一个字节对象

test = b'\x83\xf8\x41\x41\x41'

我想将此对象打印到标准输出,但如果我这样做,Python 会将对象中的可打印字符转换为 ASCII:
print(test)
b'\x83\xf8AAA'

有没有办法强制 Python 3 将可打印字符(在本例中为三个“A”)打印为转义字节?

即,使 print(test)产出
b'\x83\xf8\x41\x41\x41'

最佳答案

不,repr()输出不可配置;它是一个调试工具。

您可以使用 binascii.hexlify() 获得十六进制表示:

>>> test = b'\x83\xf8\x41\x41\x41'
>>> from binascii import hexlify
>>> test = b'\x83\xf8\x41\x41\x41'
>>> print(hexlify(test))
b'83f8414141'

或者您可以将每个单独的“字节”值转换为十六进制表示:
>>> print("b'{}'".format(''.join('\\x{:02x}'.format(b) for b in test)))
b'\x83\xf8\x41\x41\x41'

这产生了另一种表示。

关于python-3.x - 在 Python 3 中打印字节时强制转义可打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25348229/

相关文章:

python - 在Python中销毁Singleton对象

python-3.x - 运行时错误: Cannot find the MXNet library

string - 将字符串转换为字节并在Lua中写入文件

python - 如何在 Django 管理表单中添加自定义操作按钮并发布信息

python - 在 Python 中从 csv 阅读器复制列表

python - 如何修复 QFocusEvent 行为

每次运行时 Java 字符串到字节数组的变化

python - 将任意十六进制序列转换为字节

go - 二进制到文本的编码,将字节替换为 golang 中预定义的唯一字符串

go - golang时间对象中有多少字节