在python中,我试图将字符串文字转换为等效的十六进制4字节。这是我正在做的事的一个例子:

import struct
struct.pack("<i", int("08050030", 16))
>>'0\x00\x05\x08'


为什么输出渲染是这样的?我会期望\x30\x00\x05\x08吗?

最佳答案

如果REPL这样做,您可能会感到惊讶

>>> "hello"
'\x68\x65\x6c\x6c\x6f'


幸运的是没有。可打印字符按其自身打印。无法打印的字符使用诸如'\n'之类的快捷方式,并且当没有可用的快捷方式时,最后的方法就是使用十六进制表示法。

在文字中的任何地方使用十六进制编码是完全可以接受的

>>> '\x30\x00\x05\x08'
'0\x00\x05\x08'


使用它们进行显示并不是Python的偏爱。

10-06 14:43