如何转换负整数值的python为十六进制

Python013

如何转换负整数值的python为十六进制,第1张

方法有两种:

Python的整数可以成长任意大。为了生补码加到了你想要的方式,你需要指定所需的位宽。你的例子展示-199703103在64位的2的,但它只是以及本来的32位或128位,产生不同数目的0xf的起步。hex()没有做到这一点。我建议以下代码作为演示例子:

def tohex(val, nbits):

return hex((val + (1 <<nbits)) % (1 <<nbits))

print tohex(-199703103, 64)

print tohex(199703103, 64)

这将打印出:0xfffffffff418c5c1L

0xbe73a3fL

Python的整数任意大的,你要屏蔽的值来限制转换到你想要为你的2S表示的位数。

hex(-199703103 &(2**32-1)) # 32-bit

'0xf418c5c1L'

>>>hex(-199703103 &(2**64-1)) # 64-bit

'0xfffffffff418c5c1L'

Python中显示的简单情况hex(-199703103)作为负的十六进制值(-0xbe73a3f)的2S表示将有FS,在它的前面无限多的一个任意精度数。掩码值(2 ** 32-1==0xFFFFFFFF的)限制这样的:FFF...FFFFFFFFFFFFFFFFFFFFFFFFF418c5c1

&       FFFFFFFF

--------------------------------------

       F418c5c1

Python实战:四周实现爬虫系统(高清视频)百度网盘

链接: https://pan.baidu.com/s/1sdsVPB8uf80pHU8rJI1JVQ

提取码: c6yg 复制这段内容后打开百度网盘手机App,操作更方便哦   

若资源有问题欢迎追问~