Entier de champ de bits comme une liste

J'ai créé une méthode pour convertir une int à un champ de bits (dans une liste) et il fonctionne, mais je suis sûr qu'il est plus élégant de la solution - je viens de regarder pour longtemps.

Je suis curieux, comment voulez-vous convertir un int à un champ de bits représentés dans un 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)

OriginalL'auteur tMC | 2012-04-25