[英]bitwise operation on string representation of binary number python 2.7
我想对两个二进制数字的字符串表示形式执行按位或运算,但是我不知道如何将字符串转换为原始二进制。
a ='010110'
b ='100000'
一个| b
应该产生:110110
然后,我想计算开启位数。
这应该返回:
4
您可以使用内置的int()函数并将字符串2作为基础将字符串转换为二进制:
a = int('010110', 2)
b = int('100000', 2)
然后对两个值进行或运算,并通过转换为字符串并计算“ 1”字符来对位数进行计数:
print bin(a | b).count("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
字符串完全相同,因此您可以根据需要在任何地方使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.