欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python正负数转换,如何在Python中将负整数值转换为十六进制

发布时间:2023/12/15 python 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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中将负整数值转换为十六进制的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。