我有一个十六进制字符串,但我需要将它转换为实际 十六进制。 例如,我有这个十六进制字符串:
3f4800003f480000
我实现目标的一种方法是使用转义序列:
print("\x3f\x48\x00\x00\x3f\x48\x00\x00")
但是,我不能这样做,因为我想从多个变量一起创建我的十六进制。
我的程序的目的是:
- 输入一个数字,例如
100 - 将它乘以
100:100 * 100 = 10000 - 将其转换为十六进制
2710 - 添加
0000 - 再次添加
2710 - 再次添加
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"
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.
