你的意思是你有一个字节my_hex
串,你想在其中打印出十六进制数字,对吧?例如,让我们举个例子:
>>> my_string = "deadbeef"
>>> my_hex = my_string.decode('hex') # python 2 only
>>> print my_hex
Þ ¾ ï
此构造仅适用于 Python 2;但是您可以在 Python 2 或 Python 3 中编写与文字相同的字符串,如下所示:
my_hex = "\xde\xad\xbe\xef"
所以,对于答案。这是将字节打印为十六进制整数的一种方法:
>>> print " ".join(hex(ord(n)) for n in my_hex)
0xde 0xad 0xbe 0xef
理解将字符串分解为字节,ord()
将每个字节转换为相应的整数,并hex()
格式化 from 中的每个整数0x##
。然后我们在两者之间添加空格。
奖励:如果您将此方法与 unicode 字符串(或 Python 3 字符串)一起使用,则理解将为您提供 unicode 字符(而不是字节),即使它们大于两位数,您也会得到适当的十六进制值。
附录:字节字符串
在 Python 3 中,您更有可能希望使用字节字符串来执行此操作;在这种情况下,理解已经返回整数,因此您必须省略该ord()
部分并简单地调用hex()
它们:
>>> my_hex = b'\xde\xad\xbe\xef'
>>> print(" ".join(hex(n) for n in my_hex))
0xde 0xad 0xbe 0xef