二进制字符串的按位运算 python
Bitwise operation on Binary string python
如果我有两个字符串的二进制表示。如何对它们进行按位操作?
示例
a = '101'
b = '010'
c = a | b
c => '111'
首先,使用int
将二进制字符串转换为数字。您可以使用 second parameter of int
to specify the base, 2 in this case. Then, you can use |
to "or" the numbers and bin
或 format-string(这里有许多不同的可能性)转换回二进制。
>>> a = '101'
>>> b = '010'
>>> c = int(a, 2) | int(b, 2)
>>> bin(c)
'0b111'
>>> f"{c:b}"
'111'
>>> format(c, "b")
'111'
后两者也可用于添加任意数量的前导零,如有必要,例如在格式字符串中使用 08b
而不是 b
。
适用于字符串(不是通过整数)并保持前导零完整的解决方案:
>>> a = '0101'
>>> b = '0011'
>>> ''.join(map(max, a, b))
'0111'
需要字符串具有相同的长度,但考虑到您的示例,其中一个字符串有一个前导零,因此它与另一个字符串一样长,我想您就是这种情况。
如果我有两个字符串的二进制表示。如何对它们进行按位操作?
示例
a = '101'
b = '010'
c = a | b
c => '111'
首先,使用int
将二进制字符串转换为数字。您可以使用 second parameter of int
to specify the base, 2 in this case. Then, you can use |
to "or" the numbers and bin
或 format-string(这里有许多不同的可能性)转换回二进制。
>>> a = '101'
>>> b = '010'
>>> c = int(a, 2) | int(b, 2)
>>> bin(c)
'0b111'
>>> f"{c:b}"
'111'
>>> format(c, "b")
'111'
后两者也可用于添加任意数量的前导零,如有必要,例如在格式字符串中使用 08b
而不是 b
。
适用于字符串(不是通过整数)并保持前导零完整的解决方案:
>>> a = '0101'
>>> b = '0011'
>>> ''.join(map(max, a, b))
'0111'
需要字符串具有相同的长度,但考虑到您的示例,其中一个字符串有一个前导零,因此它与另一个字符串一样长,我想您就是这种情况。