想象一下,我在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"]
你知道怎么做吗?
答案 0 :(得分:3)
编辑:好的,现在您的代码使用已经移位过的数字,就像我说的那样......然后它就更容易了:
def bitToDesc(b):
return [v for k,v in mylist.iteritems() if k & b]