如何从有符号整数中获取十六进制字符串

时间:2008-10-23 06:14:02

标签: python

假设我有经典的4字节有符号整数,我想要类似的东西

print hex(-1)

给我一​​些类似的东西

>>为0xffffffff

实际上,上面给出了-0x1。我在一些较低级别的语言中徘徊,而python命令行很容易。

那么..有办法吗?

3 个答案:

答案 0 :(得分:27)

这样可以解决问题:

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

或者,以函数形式(并剥离尾随的“L”):

>>> def hex2(n):
...     return hex (n & 0xffffffff)[:-1]
...
>>> print hex2(-1)
0xffffffff
>>> print hex2(17)
0x11

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

>>> 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:]

答案 1 :(得分:4)

尝试此功能:

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

答案 2 :(得分:1)

“0x {:04x}”。format((int(my_num)& 0xFFFF),'04x'),其中my_num是必需的数字