Python二进制转换为十六进制

时间:2016-05-19 07:32:29

标签: python string binary hex gzip

我正在尝试将python中的二进制文件(一个gzip协议缓冲区对象)转换为字符串转义方式的十六进制字符串(例如。\ xFA \ x1C ..)。

我试过了两次

repr(<mygzipfileobj>.getvalue())

以及

<mygzipfileobj>.getvalue().encode('string-escape')

在这两种情况下,我最终得到的字符串不是由HEX字符组成的。

\x86\xe3$T]\x0fPE\x1c\xaa\x1c8d\xb7\x9e\x127\xcd\x1a.\x88v ...

如何实现一致的十六进制转换,其中每个字节实际上都转换为\ xHH格式? (其中H代表有效的十六进制字符0-9A-F)

1 个答案:

答案 0 :(得分:3)

您经常看到的\xhh格式是调试辅助工具repr()的输出应用于具有非ASCII代码点的字符串。任何ASCII码点都留在原位,以留下可读信息。

如果您必须使用\xhh转义符替换所有字符的字符串,则需要手动执行此操作:

''.join(r'\x{0:02x}'.format(ord(c)) for c in value)

如果你需要引用它,你也需要手动添加它们:

"'{0}'".format(''.join(r'\x{:02x}'.format(ord(c)) for c in value))