Целое число в битовое поле в виде списка

Я создал метод для преобразования 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)
15
задан tMC 25 April 2012 в 18:52
поделиться