在python中将值转换为4字节十六进制

时间:2012-06-03 01:16:12

标签: python hex

我想将任何值(可以是负数或正数)转换为十六进制。我目前的方法是这样做的。

此示例中的读取值为4003。

workingline = stringdb.readline().split(";")
print hex(int(workingline[0]))

返回

0xfa3

应该是:

0xa30f0000

(用零填充并反转十六进制)如果值为负,则应为:

0xFEFFFFFF

值-2。

我认为填充在这种情况下无效。

谢谢!

1 个答案:

答案 0 :(得分:4)

您需要struct模块:

>>> struct.pack("<I", 4003).encode('hex')
'a30f0000'

对于-2,你需要做一些其他工作:

>>> struct.pack("<I", -2 + 2**32).encode('hex')
'feffffff'

为任何值执行此操作的方法是:

struct.pack("<I", (value + 2**32) % 2**32).encode('hex')