如何从带符号整数获得十六进制字符串

21 投票
3 回答
24237 浏览
提问于 2025-04-11 09:28

假设我有一个经典的4字节有符号整数,我想要得到类似于

print hex(-1)

这样的结果

0xffffffff

实际上,上面的代码给我的结果是 -0x1。我在使用一些底层语言,Python命令行又快又简单。

那么……有没有办法做到这一点呢?

3 个回答

2

使用

"0x{:04x}".format((int(my_num) & 0xFFFF), '04x')

其中 my_num 是你需要的数字。

4

试试这个函数:

'%#4x' % (-1 & 0xffffffff)
33

这个方法可以解决问题:

>>> print(hex (-1 & 0xffffffff))
0xffffffff

或者,使用一种总是返回固定大小的变体(可能还有更好的方法):

>>> def hex3(n):
...     return "0x%s"%("00000000%s"%(hex(n&0xffffffff)[2:-1]))[-8:]
...
>>> print hex3(-1)
0xffffffff
>>> print hex3(17)
0x00000011

或者,完全不使用hex(),多亏了Ignacio和bobince的建议:

def hex2(n):
    return "0x%x"%(n&0xffffffff)

def hex3(n):
    return "0x%s"%("00000000%x"%(n&0xffffffff))[-8:]

撰写回答