2014-03-05 112 views
1

我有十六進制的列表字節這樣如何十六進制的列表追加到一個十六進制數

['0xe1', '0xd7', '0x7', '0x0'] 

字符串(如從二進制文件中讀取)

我想翻轉列表將列表附加在一起以創建一個十六進制數,

['0x07D7E1'] 

如何將列表格式化爲此格式?

+0

你的意思是「0x07D7E1」或「0x07D71E」? – Guy

+0

@Sabyasachi:爲什麼'07d71e'?輸入以'e1'開頭。 –

+0

@MartijnPieters對不起,我誤讀了。我認爲個人投入也被扭轉了。 – Guy

回答

2

串連您的十六進制數成一個字符串:

'0x' + ''.join([format(int(c, 16), '02X') for c in reversed(inputlist)]) 

這不包括明確在輸出中00字節:

>>> inputlist = ['0xe1', '0xd7', '0x7', '0x0'] 
>>> '0x' + ''.join([format(int(c, 16), '02X') for c in reversed(inputlist)]) 
'0x0007D7E1' 

不過,我會考慮讀你的二進制文件格式更好;使用struct例如直接從文件到正確的整數解壓縮字節在正確的字節順序:

>>> import struct 
>>> bytes = ''.join([chr(int(c, 16)) for c in inputlist]) 
>>> value = struct.unpack('<I', bytes)[0] 
>>> print hex(value) 
0x7d7e1 
+0

乾杯Martijn工作! – Don