2012-06-03 159 views
0

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

在本例中的读出的值是4003

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

这返回

0xfa3 

它应该是:

0xa30f0000 

(用零填充和倒置十六进制)如果值是否定的,应该是:

0xFEFFFFFF 

值-2。

我认为在这种情况下填充不起作用。

谢谢!

+0

[如何从有符号整数中获取十六进制字符串]的确切副本(http://stackoverflow.com/questions/228702/how-to-get-hex-string-from-signed-in teger) – tylerl

回答

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') 
+0

这似乎只适用于正值。你知道另一种方法使它对负值起作用吗? – user1150764

+0

好的,谢谢!我想我会为两种方法做一个IF语句。 :) – user1150764

+2

使用'“

相关问题