像map(int, list(bin((1<<8)+x))[-4:]) 这样的表达式会给你一个数字的低4位,作为一个列表。 (编辑:更简洁的形式是map(int,bin(x)[2:].zfill(4));见下文。)如果您知道要显示多少位,请将 4([-4:])替换为那个号码;如有必要,将 8((1<<8))设为更大的数字。例如:
>>> x=0b0111
>>> map(int,list(bin((1<<8)+x))[-4:])
[0, 1, 1, 1]
>>> x=37; map(int,list(bin((1<<8)+x))[-7:])
[0, 1, 0, 0, 1, 0, 1]
>>> [int(d) for d in bin((1<<8)+x)[-7:]]
[0, 1, 0, 0, 1, 0, 1]
上面的最后一个示例显示了使用 map 和 list 的替代方法。以下示例显示了一种用于获取前导零的更简洁的形式。在这些形式中,用所需的最小位数代替 8。
>>> x=37; [int(d) for d in bin(x)[2:].zfill(8)]
[0, 0, 1, 0, 0, 1, 0, 1]
>>> x=37; map(int,bin(x)[2:].zfill(8))
[0, 0, 1, 0, 0, 1, 0, 1]
>>> x=37; map(int,bin(x)[2:].zfill(5))
[1, 0, 0, 1, 0, 1]
>>> x=37; map(lambda k:(x>>-k)&1, range(-7,1))
[0, 0, 1, 0, 0, 1, 0, 1]