我有十六进制字符串,但我需要将其转换为实际 hex 。 例如,我有十六进制字符串:
3f4800003f480000
我实现目标的一种方法是使用转义序列:
print("\x3f\x48\x00\x00\x3f\x48\x00\x00")
但是,我不能这样做,因为我想从多个变量中一起创建我的十六进制。
我的程序的 目的 是:
100
100
:100 * 100 = 10000
2710
0000
2710
0000
结果我期待的是2710000027100000
。现在我需要将这个十六进制数作为参数传递给函数(作为十六进制)。
答案 0 :(得分:3)
在Python中,没有单独的类型为'hex'。它将数字的十六进制表示法表示为str
。您可以通过type
将其称为hex()
来查看Python's hex
document:
# 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的Hex样式,不要使用转义字符将其转换为“\ x3f \ x48 \ x00 \ x00 \ x3f \ x48 \ x00 \ x00” 强>
来自https://github.com/googlesamples/android-architecture-components:
将整数转换为带有前缀“0x”的小写十六进制字符串。如果x不是Python int对象,则必须定义一个返回整数的 index ()方法。
答案 1 :(得分:2)
尝试binascii.unhexlify
:
返回由十六进制字符串hexstr。
表示的二进制数据
示例:
assert binascii.unhexlify('3f4800003f480000') == b"\x3f\x48\x00\x00\x3f\x48\x00\x00"
答案 2 :(得分:1)
>>> hex(int('3f4800003f480000', 16))
'0x3f4800003f480000'