Python 2.7中二进制数字的字符串表示上进行位运算

3
我想对两个二进制数字串执行按位或操作,但我无法想出如何将这些字符串转换为原始二进制数。
a = '010110' b = '100000'
a | b
应该返回: 110110
然后我想要计算置位位的数量。 这应该返回: 4
2个回答

3

您可以使用内置的int()函数将字符串转换为二进制,并将2作为基数传递:

a = int('010110', 2)
b = int('100000', 2)

然后将这两个值进行或运算,并将结果转换为字符串并计算其中的“1”字符数量:
print bin(a | b).count("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字符串完全相同,因此如果您愿意,可以在任何地方使用它。

在ideone.com上查看此代码运行情况


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接