Skip to main content
 首页 » 编程设计

Python将包含十六进制的字符串转换为实际的十六进制

2025年05月04日24soundcode

我有一个十六进制字符串,但我需要将它转换为实际 十六进制。 例如,我有这个十六进制字符串:

3f4800003f480000 

我实现目标的一种方法是使用转义序列:

print("\x3f\x48\x00\x00\x3f\x48\x00\x00") 

但是,我不能这样做,因为我想从多个变量一起创建我的十六进制。

我的程序的目的是:

  1. 输入一个数字,例如 100
  2. 将它乘以 100:100 * 100 = 10000
  3. 将其转换为十六进制 2710
  4. 添加0000
  5. 再次添加2710
  6. 再次添加0000

结果 我期望的是 2710000027100000。现在我需要将这个十六进制数作为参数传递给一个函数(作为十六进制)。

请您参考如下方法:

在 Python 中,没有像“hex”这样的单独类型。它将数字的十六进制表示法表示为 str。您可以查看 type自己调用hex()作为:

#         v  convert integer to hex 
>>> type(hex(123)) 
<type 'str'> 

但为了将值表示为十六进制,Python 将 0x 添加到表示十六进制 数字的字符串前面。例如:

>>> hex(123) 
'0x7b'  

因此,在您的情况下,为了将您的字符串显示为十六进制等价物,您只需在其前面加上“0x”作为:

>>> my_hex = "0x" + "3f4800003f480000" 

这样,如果您稍后可能想将其转换为其他一些表示法,比如说整数(根据您的问题陈述的性质,您肯定需要),您只需要做的是用 base 16 调用 int 作为:

>>> int("0x3f4800003f480000", base=16) 
4559894623774310400 

其实Python的解释器已经足够聪明了。如果你甚至不在前面加上“0x”,它会处理它。例如:

>>> int("3f4800003f480000", base=16) 
4559894623774310400 

“0x”是关于表示字符串是十六进制字符串,以防有人正在查看/调试您的代码(将来),他们会明白的。这就是为什么它是首选。

所以我的建议是坚持使用 Python 的十六进制样式,不要将其转义为 "\x3f\x48\x00\x00\x3f\x48\x00\x00"


来自Python's hex document :

Convert an integer number to a lowercase hexadecimal string prefixed with “0x”. If x is not a Python int object, it has to define an index() method that returns an integer.