我想将任何值(可以是负数或正数)转换为十六进制。我目前的方法是这样做的。
此示例中的读取值为4003。
workingline = stringdb.readline().split(";")
print hex(int(workingline[0]))
返回
0xfa3
应该是:
0xa30f0000
(用零填充并反转十六进制)如果值为负,则应为:
0xFEFFFFFF
值-2。
我认为填充在这种情况下无效。
谢谢!
答案 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')