【发布时间】:2014-05-03 00:42:24
【问题描述】:
我有一个数字列表(这里是一个 4 位数字的例子,但我想用 16 位整数来做):
L = [0b1000,0b1100,0b1111,0b1001, 0b0000]
我想将所有第 1 位组合在一起,然后将所有第 2 位组合在一起,然后将所有第 3 位组合在一起,等等,如下所示:
out = 0b11110011000010000110
此解决方案(由@markcial 提出)有效:
print [[a[i] for a in [format(b,'04b') for b in L]] for i in range(4)]
#[['1', '1', '1', '1', '0'], ['0', '1', '1', '0', '0'], ['0', '0', '1', '0', '0'], ['0', '0', '1', '1', '0']]
但我想避免字符串格式化来执行这些二进制操作。
如何在不使用字符串格式的情况下将位组合在一起?
【问题讨论】:
-
你以后还能用一些字符串方法把结果转换成整数吗?或者根本就不是字符串?
-
@PauloBu,如果可能的话,我想避免使用字符串:对每个位操作使用字符串字符就像将内存使用量乘以 8(每个字符串字符使用 8 位)
标签: python binary bit-manipulation