Python将包含十六进制的字符串转换为实际十六进制
我有一个十六进制字符串,但我需要将它转换为实际的十六进制。 例如,我有一个十六进制字符串: 实现目标的一种方法是使用转义序列:Python将包含十六进制的字符串转换为实际十六进制,python,hex,decimal,implicit-conversion,Python,Hex,Decimal,Implicit Conversion,我有一个十六进制字符串,但我需要将它转换为实际的十六进制。 例如,我有一个十六进制字符串: 实现目标的一种方法是使用转义序列: print("\x3f\x48\x00\x00\x3f\x48\x00\x00") 但是,我不能这样做,因为我想从多个变量一起创建十六进制 我的计划的目的是: 以数字为例100 将其乘以100:100*100=10000 将其转换为十六进制2710 添加0000 再次添加2710 再次添加0000 我期望的结果是2710000027100000。现在我需要将这个十六进
print("\x3f\x48\x00\x00\x3f\x48\x00\x00")
但是,我不能这样做,因为我想从多个变量一起创建十六进制
我的计划的目的是:
100
100
:100*100=10000
2710
0000
2710
0000
我期望的结果是
2710000027100000
。现在我需要将这个十六进制数作为参数传递给函数(十六进制)。在Python中,没有单独的类型作为“hex”。它将数字的十六进制表示法表示为str
。您可以通过拨打以下电话来检查:
因此,在您的例子中,为了将字符串显示为十六进制等价物,只需在其前面加上“0x”,如下所示:
这样,如果您以后可能想将其转换为其他符号,比如整数(根据问题陈述的性质,您肯定需要整数),则只需使用base调用int
,如下所示:
>>> int("0x3f4800003f480000", base=16)
4559894623774310400
事实上,Python的解释器足够聪明。如果您甚至不在“0x”前面加前缀,它将处理它。例如:
>>> hex(123)
'0x7b'
>>> int("3f4800003f480000", base=16)
4559894623774310400
“0x”表示字符串是十六进制字符串,以防有人(将来)查看/调试您的代码时,他们会明白这一点。这就是为什么它是首选
所以我的建议是坚持Python的十六进制样式,不要将其转换为转义字符“\x3f\x48\x00\x00\x3f\x48\x00”
从: 将整数转换为前缀为“0x”的小写十六进制字符串。如果x不是Python int对象,它必须定义一个返回整数的index()方法
在Python中,没有单独的类型作为“hex”。它将数字的十六进制表示法表示为
str
。您可以通过拨打以下电话来检查:
因此,在您的例子中,为了将字符串显示为十六进制等价物,只需在其前面加上“0x”,如下所示:
这样,如果您以后可能想将其转换为其他符号,比如整数(根据问题陈述的性质,您肯定需要整数),则只需使用base调用int
,如下所示:
>>> int("0x3f4800003f480000", base=16)
4559894623774310400
事实上,Python的解释器足够聪明。如果您甚至不在“0x”前面加前缀,它将处理它。例如:
>>> hex(123)
'0x7b'
>>> int("3f4800003f480000", base=16)
4559894623774310400
“0x”表示字符串是十六进制字符串,以防有人(将来)查看/调试您的代码时,他们会明白这一点。这就是为什么它是首选
所以我的建议是坚持Python的十六进制样式,不要将其转换为转义字符“\x3f\x48\x00\x00\x3f\x48\x00”
从: 将整数转换为前缀为“0x”的小写十六进制字符串。如果x不是Python int对象,它必须定义一个返回整数的index()方法
尝试
binascii.unexlify
:
返回由十六进制字符串hextr表示的二进制数据
例如:
assert binascii.unhexlify('3f4800003f480000') == b"\x3f\x48\x00\x00\x3f\x48\x00\x00"
尝试
binascii.unexlify
:
返回由十六进制字符串hextr表示的二进制数据
例如:
assert binascii.unhexlify('3f4800003f480000') == b"\x3f\x48\x00\x00\x3f\x48\x00\x00"
在这个问题中,他们想把一个十进制转换成十六进制,但我有一个已经包含十六进制的字符串。如果你乘以6553600而不是100,你就达到了目标的一半,没有任何字符串操作。但我并不完全清楚你的最终程序的目的。在这个问题上,他们可能想把一个十进制转换成十六进制,但我有一个已经包含十六进制的字符串。如果你乘以6553600,而不是乘以100,你就达到了目标的一半,没有任何字符串操作。但我并不完全清楚你们最终计划的目的。