2015-07-06 80 views
0

想象一下,我在Python中有以下bitlist。將整數轉換爲位表

mylist = {1:"Error 1", 
      2:"Error 2", 
      4:"Error 3", 
      8:"Error 4", 
      16:"Error 5", 
      ... 
      n:"Error n"} 

然後我有一個設備發送給我一個當前錯誤的位列表。當位0被設置時,錯誤1發生。當位4(二進制10000 - >十進制16)置位時,發生錯誤5。 但是,那麼也可能有多個錯誤。
例如,設備可以發送7。現在我需要一個函數,它返回給我一些像["Error 1", "Error2", "Error 3"]

你知道該怎麼做嗎?

+0

爲什麼你認爲'[「錯誤1」,「誤差2」, 「錯誤3」]第7號是否有任何背後的邏輯?你到目前爲止嘗試過什麼嗎? – Kasramvd

+1

對不起,我只注意到我在源代碼中犯了一個錯誤。我要解決這個問題。 – 0xAffe

+0

@Kasra修復它 – 0xAffe

回答

3

編輯: OK,現在你的代碼使用已經移數字就像我說的...那麼你可以更輕鬆:

def bitToDesc(b): 
    return [v for k,v in mylist.iteritems() if k & b] 
+0

哇,這就是爲什麼我愛蟒蛇。在單一行中進行這樣的操作非常棒。它工作的完美。現在我將嘗試瞭解發生了什麼。謝謝! – 0xAffe