将二进制转换为数字列表 Python

11

我有以下情况:

x = 0b0111

我想把这个值转换为:

y = [0, 1, 1, 1]
当我把 x = 0b1001 转换成 y = [1, 0, 0, 1] 时,但是当我尝试对 x = 0b0111 做同样的转换,然后用 str(bin(y)) 转回去时,我好像失去了前导的 0,得到了 0b111。有什么建议吗?

1
0b0111 == 0b111 那有什么问题呢?如果你需要列表长度固定,那么只需在开头添加适量的 0 即可。 - Joel Cornett
11个回答

0

不太符合 Python 风格,但是:

byte = 0b00011001
arr = []
for i in range(7, -1, -1):
    arr.append((byte & 1<<i)>>i)
print(arr)

[0, 0, 0, 1, 1, 0, 0, 1]

这里使用位掩码来“提取”每个位并将其附加到一个数组中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接