我有以下情况:x = 0b0111 我想把这个值转换为:y = [0, 1, 1, 1] 当我把 x = 0b1001 转换成 y = [1, 0, 0, 1] 时,但是当我尝试对 x = 0b0111 做同样的转换,然后用 str(bin(y)) 转回去时,我好像失去了前导的 0,得到了 0b111。有什么建议吗?
不太符合 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] 这里使用位掩码来“提取”每个位并将其附加到一个数组中。
0b0111 == 0b111
那有什么问题呢?如果你需要列表长度固定,那么只需在开头添加适量的 0 即可。 - Joel Cornett