2014-12-08 25 views
0

我有庫函數從硬件讀取並返回轉換整數Python列表爲十六進制數

value = readregister(registerindex,numbytes) 

其中value是一個Python列表。

如果numbytes爲2,則完全恢復數量將在

value[0],value[1] 

返回例如它返回

[128,2] 

這在十六進制是

[0x80,0x2] 

我如何將這個2個元素的列表值轉換爲一個十六進制python數字? 所以,如果將它們結合起來,我應該得到0x280處即640

+0

http://en.wikipedia.org/wiki/Positional_notation#Base_conversion – akonsu 2014-12-08 07:10:16

+0

爲什麼要問去獲得十六進制格式當你真正想要的是字節轉換成一個數字。 – Dunes 2014-12-08 09:06:17

+0

'十六進制(128 +(2 * 256))'將執行它或十六進制(值[0] +(256 *值[1]))' – Ben 2014-12-08 09:24:40

回答

2

沒有必要轉換到中間的十六進制表示。你可以左移位來創建你想要的數字。

def get_number(values): 
    total = 0 
    for val in reversed(values): 
     total = (total << 8) + val 
    return total 
0

試試這個:

list=[128,2] 
>>> b=[] 
>>> for item in list: 
...  b.append(hex(item)) 
... 
>>> b 
>>>[0x80,0x2] 
+0

或只是'print(list(map(hex, [128,2])))'。雖然列表名爲列表不是一個好主意。 – Marcin 2014-12-08 07:17:52

+1

問題是如何將列表轉換爲數字 – akonsu 2014-12-08 07:18:32

+0

@Avinash你的答案是不完整的。最終的輸出應該是這樣的:val = 0x280或val = 640 – user974168 2014-12-08 08:25:32

相關問題