如何在python中异或两个二进制字符串

时间:2016-07-05 13:21:33

标签: python xor

我需要在两个二进制字符串之间进行XOR运算。

Typescript

我目前正在使用此功能

xor("00110011", "11001100") = "11111111"

请给我好方法

3 个答案:

答案 0 :(得分:5)

如果必须使用'0''1'个字符串,请使用映射:

_xormap = {('0', '1'): '1', ('1', '0'): '1', ('1', '1'): '0', ('0', '0'): '0'}
def xor(x, y):
    return ''.join([_xormap[a, b] for a, b in zip(x, y)])

否则,只需转换为两个整数,对其进行异或,然后重新格式化为二进制字符串:

def xor(x, y):
    return '{1:0{0}b}'.format(len(x), int(x, 2) ^ int(y, 2))

这可确保结果字符串具有相同的长度,通过零填充到x的长度。

答案 1 :(得分:4)

def xor(x, y):
    return '{0:b}'.format(int(x, 2) ^ int(y, 2))

this answer的积分。与流行的看法相反,Python does have bitwise operators

答案 2 :(得分:-2)

如果你需要重新发明轮子

def alternative_xor(x, y):
  a = int(x)
  b = int(y)  
  return (a & ~b) | (~a & b)