python正负数转换,如何在Python中将负整数值转换为十六进制
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正负数转换,如何在Python中将负整数值转换为十六进制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贴贴怎么玩
- 下一篇: 特斯拉卖爆了 曝降价三天收获三万订单 消