比方说a=0xF0
和b=[a list of bits]
.如何迭代a
的每一位,以便可以在该位和列表b
中的位之间执行逐位运算?
在循环之前,我曾try 使用bin()
方法将a
转换为其二进制形式,但是,我不能再执行逐位操作,因为现在a
的每一位都是字符串数据类型.
如有任何帮助,我们不胜感激!
比方说a=0xF0
和b=[a list of bits]
.如何迭代a
的每一位,以便可以在该位和列表b
中的位之间执行逐位运算?
在循环之前,我曾try 使用bin()
方法将a
转换为其二进制形式,但是,我不能再执行逐位操作,因为现在a
的每一位都是字符串数据类型.
如有任何帮助,我们不胜感激!
可以使用BitShift:
a = 0xF0
b = [1, 0, 1, 0, 1, 0, 1, 0]
print(bin(a))
# 0b11110000
for idx, bit_in_b in enumerate(b):
bit_in_a = (a >> idx) & 1
binary_and_operation = bit_in_a & bit_in_b
print(bit_in_a, binary_and_operation)
# 0 0
# 0 0
# 0 0
# 0 0
# 1 1
# 1 0
# 1 1
# 1 0
小心到两点:
a
将从右到左迭代,b将从左到右迭代,但您可以根据需要进行更改.len(b)
!=a
中的位数,则行为可能不是您想要的.