如何使用Python以补码形式打印带符号整数为十六进制数?
我有一个负整数(4个字节),我想要得到它的二进制补码表示的十六进制形式。
>>> i = int("-312367")
>>> "{0}".format(i)
'-312367'
>>> "{0:x}".format(i)
'-4c42f'
但是我希望看到的是“FF...”这样的结果。
6 个回答
5
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时,发现它并没有按照预期的方式工作。这时候,我们就需要去查找解决方案,看看其他人是怎么处理类似问题的。
在这个过程中,StackOverflow是一个非常有用的资源。它是一个问答网站,程序员们可以在这里提问和回答问题。通过搜索,我们可以找到很多人遇到过的相似问题,以及他们是如何解决的。这不仅能帮助我们解决当前的问题,还能让我们学到更多的知识。
总之,遇到问题时,不要气馁,利用好像StackOverflow这样的资源,积极寻找答案和解决方案,这样我们就能不断进步,成为更好的程序员。
>>> x = -123
>>> bits = 16
>>> hex((1 << bits) + x)
'0xff85'
>>> bits = 32
>>> hex((1 << bits) + x)
'0xffffff85'
5
使用bitstring模块:
>>> bitstring.BitArray('int:32=-312367').hex
'0xfffb3bd1'
6
这里有一种方法(适用于16位数字):
>>> x=-123
>>> hex(((abs(x) ^ 0xffff) + 1) & 0xffff)
'0xff85'
(不过这可能不是最优雅的方式)