问题
I'm trying to xor 2 binaries using python like this but my output is not in binary any help?
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a) ^ int(b)
print y
回答1:
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a,2) ^ int(b,2)
print '{0:b}'.format(y)
回答2:
To get the Xor'd binary to the same length, as per the OP's request, do the following:
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a, 2)^int(b,2)
print bin(y)[2:].zfill(len(a))
[output: 00010100000000001110000101010001001]
Convert the binary strings to an integer base 2, then XOR
, then bin()
and then skip the first two characters, 0b
, hence the bin(y0)[2:]
.
After that, just zfill
to the length - len(a)
, for this case.
Cheers
回答3:
Since you are starting with strings and want a string result, you may find this interesting but it only works if they are the same length.
y = ''.join('0' if i == j else '1' for i, j in zip(a,b))
If they might be different lengths you can do:
y = ''.join('0' if i == j else '1' for i, j in zip(a[::-1],b[::-1])[::-1])
y = a[len(y):] + b[len(y):] + y
来源:https://stackoverflow.com/questions/19414093/how-to-xor-binary-with-python