对二进制数python 2.7的字符串表示的按位运算

时间:2016-05-13 04:42:54

标签: python bit-manipulation

我想对二进制数的两个字符串表示执行按位OR,但我无法弄清楚如何将字符串转换为原始二进制数。

a =' 010110'
b =' 100000'

a | B'/ P>

应该产生: 110110

然后我想计算一下比特数 这应该返回:
4

2 个答案:

答案 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字符串完全相同,因此您可以随时随地使用它。

See this code running on ideone.com