2012-06-03 161 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

使用'「

相關問題