繁体   English   中英

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

[英]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字符串完全相同,因此您可以根据需要在任何地方使用它。

看到此代码在ideone.com上运行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM