将整数转换为位列表

时间:2015-07-06 11:19:50

标签: python

想象一下,我在Python中有以下位列表。

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"]

的函数

你知道怎么做吗?

1 个答案:

答案 0 :(得分:3)

编辑:好的,现在您的代码使用已经移位过的数字,就像我说的那样......然后它就更容易了:

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