2015-07-06 53 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