在Python中以十六进制打印变量

Yaw*_*Yaw 14 python string hex

我正在尝试找到一种以十六进制格式打印字符串的方法.例如,我有这个字符串,然后我将其转换为十六进制值.

my_string = "deadbeef"
my_hex = my_string.decode('hex')
Run Code Online (Sandbox Code Playgroud)

如何打印my_hex0xde 0xad 0xbe 0xef

让我的问题清楚......让我说我有一些数据0x01, 0x02, 0x03, 0x04存储在变量中.现在我需要以十六进制打印它,以便我可以阅读它.我想我正在寻找相当于Python的printf("%02x", my_hex).我知道有print '{0:x}'.format(),但这不会起作用,my_hex它也不会用零填充.

ale*_*xis 20

你的意思是你有一串字节my_hex要打印出十六进制数字,对不对?例如,从您的示例:

>>> my_string = "deadbeef"
>>> my_hex = my_string.decode('hex')  # python 2 only
>>> print my_hex
Þ ­ ¾ ï
Run Code Online (Sandbox Code Playgroud)

这是一种方法:

>>> print " ".join(hex(ord(n)) for n in my_hex)
0xde 0xad 0xbe 0xef
Run Code Online (Sandbox Code Playgroud)

理解将字符串分解为字节,ord()将每个字节转换为相应的整数,并hex()格式化from中的每个整数0x##.然后我们在两者之间添加空格.

额外:如果将此方法与unicode字符串一起使用,则理解将为您提供unicode字符(而非字节),即使它们大于两位数,您也将获得相应的十六进制值.


Mat*_*ell 8

将字符串转换为以 16 为基数的整数,然后转换为十六进制。

print hex(int(string, base=16))
Run Code Online (Sandbox Code Playgroud)

这些是内置函数。

http://docs.python.org/2/library/functions.html#int

例子

>>> string = 'AA'
>>> _int = int(string, base=16)
>>> _hex = hex(_int)
>>> print _int
170
>>> print _hex
0xaa
>>> 
Run Code Online (Sandbox Code Playgroud)


Kur*_*ers 7

稍后打印/格式样式的另一个答案是:

res[0]=12
res[1]=23
print("my num is 0x{0:02x}{1:02x}".format(res[0],res[1]))
Run Code Online (Sandbox Code Playgroud)