【发布时间】:2012-05-06 12:14:56
【问题描述】:
我创建了一种将int 转换为位域(在列表中)的方法,它可以工作,但我确信还有更优雅的解决方案——我已经盯着它看了很长时间。
我很好奇,您如何将int 转换为list 中表示的位域?
def get(self):
results = []
results.append(1 if (self.bits & 1) else 0)
results.append(1 if (self.bits & 2) else 0)
results.append(1 if (self.bits & 4) else 0)
results.append(1 if (self.bits & 8) else 0)
results.append(1 if (self.bits & 16) else 0)
results.append(1 if (self.bits & 32) else 0)
results.append(1 if (self.bits & 64) else 0)
results.append(1 if (self.bits & 128) else 0)
return results
def set(self, pin, direction):
pin -= 1
if pin not in range(0, 8): raise ValueError
if direction: self.bits |= (2 ** pin)
else: self.bits &=~(2 ** pin)
【问题讨论】:
标签: python list bit-fields