【发布时间】:2016-03-15 21:17:05
【问题描述】:
我正在尝试从十六进制手动构建一个字节:
>>> '\x74'
't'
>>> hex(116)
'0x74'
>>> hex(116)[1:]
'x74'
>>> '\\' + hex(116)[1:]
'\\x74'
>>>
是否可以将\x74 精确地创建为字节?
没有对chr()使用魔法。
>>> chr(int(hex(116), 16))
't
【问题讨论】:
-
“作为字节”是什么意思? Python 中没有“字节”类型。您可以制作长度为 1 的 bytearray 或字节字符串(即非 unicode 字符串)。如果你想做的话,
chr不是“魔法”;它是做你想做的事情的功能。 -
@BrenBarn as
'\x74'这是str(实际上是python2.7中的字节。) -
您已经创建的字符串是
\x74。由于它的显示方式,它只显示两个反斜杠。如果你这样做print('\\' + hex(116)[1:]),你会看到它只有一个反斜杠。但这不是“一个字节”;这是一个包含四个字符的字符串。 -
@BrenBarn 所以我无法在代码中创建
'\x74'(可打印t)?手动放置的唯一一种方法.. -
你可以,而且你刚刚做到了。如果你想要一个打印为
"t"的字符串,那就是字符串"t"。如果您想要一个打印为"\x74"的字符串,那就是字符串"\x74",您可以输入为r"\x74"或"\\x74"。没有字符串可以打印为"t",但不知何故秘密地“是”\x74。
标签: python python-2.7 hex