how to convert negative integer value to hex in python

前端 未结 3 578
我寻月下人不归
我寻月下人不归 2020-12-08 10:17

I use python 2.6

>>> hex(-199703103)
\'-0xbe73a3f\'

>>> hex(199703103)
\'0xbe73a3f\'

Positive and negative value are the

3条回答
  •  余生分开走
    2020-12-08 10:40

    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
    

提交回复
热议问题