私は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)