如何在Python中将负整数值转换为十六进制 [英] how to convert negative integer value to hex in python
问题描述
我使用python 2.6
>>>十六进制(-199703103)
'-0xbe73a3f'
>>>十六进制(199703103)
'0xbe73a3f'
正值和负值是相同的吗? p>
当我使用calc时,值是 FFFFFFFFF418C5C1
。
Python的整数可以随意增大。为了以您希望的方式计算原始补充,您需要指定所需的位宽。您的示例在64位二进制补码中显示 -199703103
,但它也可能是32位或128位,导致不同数量的<$ c
$ b
hex()
doesn'这样做。我建议以下方法作为替代:
$ pre $ def $ to $ (1
print tohex(-199703103,64)
print tohex(199703103,64)
打印出来:
0xfffffffff418c5c1L
0xbe73a3fL
I use python 2.6
>>> hex(-199703103)
'-0xbe73a3f'
>>> hex(199703103)
'0xbe73a3f'
Positive and negative value are the same?
When I use calc, the value is FFFFFFFFF418C5C1
.
Python's integers can grow arbitrarily large. In order to compute the raw two's-complement the way you want it, you would need to specify the desired bit width. Your example shows -199703103
in 64-bit two's complement, but it just as well could have been 32-bit or 128-bit, resulting in a different number of 0xf
's at the start.
hex()
doesn't do that. I suggest the following as an alternative:
def tohex(val, nbits):
return hex((val + (1 << nbits)) % (1 << nbits))
print tohex(-199703103, 64)
print tohex(199703103, 64)
This prints out:
0xfffffffff418c5c1L
0xbe73a3fL
这篇关于如何在Python中将负整数值转换为十六进制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!