gpt4 book ai didi

python - 在 Python 中打印十六进制变量

转载 作者:太空狗 更新时间:2023-10-29 17:24:50 27 4
gpt4 key购买 nike

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

my_string = "deadbeef"
my_hex = my_string.decode('hex')

如何将 my_hex 打印为 0xde 0xad 0xbe 0xef

为了让我的问题更清楚...假设我有一些数据,例如 0x01, 0x02, 0x03, 0x04 存储在一个变量中。现在我需要以十六进制打印它以便我可以阅读它。我想我正在寻找与 printf("%02x", my_hex) 等效的 Python。我知道有 print '{0:x}'.format(),但这不适用于 my_hex,也不会用零填充。

最佳答案

你的意思是你在 my_hex 中有一个 bytes 的字符串,你想将其打印为十六进制数字,对吗?例如,让我们举个例子:

>>> 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

comprehension 将字符串分解为字节,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

关于python - 在 Python 中打印十六进制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572008/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com