我需要在两个二进制字符串之间进行XOR运算。
Typescript
我目前正在使用此功能
xor("00110011", "11001100") = "11111111"
请给我好方法
答案 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)