我想对二进制数的两个字符串表示执行按位OR,但我无法弄清楚如何将字符串转换为原始二进制数。
a =' 010110'
b =' 100000'
a | B'/ P>
应该产生: 110110
然后我想计算一下比特数
这应该返回:
4
答案 0 :(得分:3)
您可以使用内置的int() function将字符串转换为二进制文件,并将2作为基础:
a = int('010110', 2)
b = int('100000', 2)
然后对两个值进行OR运算,并通过转换为字符串并计算“1”字符来计算位数:
print bin(a | b).count("1")
答案 1 :(得分:1)
您可以编写一个派生自str
的自定义类,并覆盖其负责二元OR运算符|
的魔术方法。
实现OR的方法有很多种。 @samgak在他的回答中已经描述了最简单的一个,您可以使用int
将基数指定为2,然后使用其|
运算符:
class bitstr(str)
def __or__(self, other):
return bin(int(self, 2) | int(other, 2))[2:]
# need to slice because 'bin' prefixes the result string with "0b".
您可以使用它:
a = '010110'
b = bitstr('100000')
print(bitstr(a) | b)
# Output: 110110
您看到某个地方需要转换为bitstr
,但在哪一点上无关紧要。此外,对于|
运算符以外的所有其他操作,我们的自定义bitstr
行为与普通str
字符串完全相同,因此您可以随时随地使用它。