我想对两个二进制数字串执行按位或操作,但我无法想出如何将这些字符串转换为原始二进制数。
a = '010110' b = '100000'
a | b
应该返回: 110110
然后我想要计算置位位的数量。 这应该返回: 4
a = '010110' b = '100000'
a | b
应该返回: 110110
然后我想要计算置位位的数量。 这应该返回: 4
您可以使用内置的int()函数将字符串转换为二进制,并将2作为基数传递:
a = int('010110', 2)
b = int('100000', 2)
print bin(a | b).count("1")
str
,并覆盖其负责二进制 OR 运算符|
的魔术方法。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
字符串完全相同,因此如果您愿意,可以在任何地方使用它。