如何从带符号整数获得十六进制字符串
假设我有一个经典的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:]