0

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

本例中的读取值为 4003。

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

这返回

0xfa3

它应该是:

0xa30f0000

(用零和倒置的十六进制填充)如果值为负,则应为:

0xFEFFFFFF

值为-2。

我认为在这种情况下填充没有帮助。

谢谢!

4

1 回答 1

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')
于 2012-06-03T01:18:14.413 回答