如何使用Python以补码形式打印带符号整数为十六进制数?

10 投票
6 回答
16172 浏览
提问于 2025-04-16 01:13

我有一个负整数(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'

(不过这可能不是最优雅的方式)

撰写回答