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
karthikr
94k25 gold badges191 silver badges186 bronze badges
asked Oct 16, 2013 at 21:19
1
a="11011111101100110110011001011101000"
b="11001011101100111000011100001100001"
y=int[a,2] ^ int[b,2]
print['{0:b}'.format[y]]
answered Oct 16, 2013 at 21:20
RobᵩRobᵩ
157k17 gold badges224 silver badges300 bronze badges
4
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
Matan Itzhak
2,2102 gold badges18 silver badges33 bronze badges
answered Mar 19, 2017 at 16:21
BigHBigH
3224 silver badges5 bronze badges
Since you are trying to carryout XOR on the same length binaries, the following should work just fine:
c=[str[int[a[i]]^int[b[i]]] for i in range[len[a]]]
c=''.join[c]
You can avoid the formatting altogether.
answered Nov 27, 2020 at 17:26
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
answered Oct 16, 2013 at 23:29
dansalmodansalmo
11.1k5 gold badges55 silver badges51 bronze badges
- Docs »
- ^ Bitwise Exclusive XOR
- Edit on GitHub
Description¶
Returns the result of bitwise XOR of two integers.
Syntax¶
A ^ B
AInteger object.BInteger object.Remarks¶
Bitwise XOR sets the bits in the result to 1 if either, but not both, of the corresponding bits in the two operands is 1.
Example 1¶
>>> bin[0b1111 ^ 0b1111] '0b0' >>> bin[0b1111 ^ 0b0000] '0b1111' >>> bin[0b0000 ^ 0b1111] '0b1111' >>> bin[0b1010 ^ 0b1111] '0b101'
Example 2¶
>>> # this example swaps integers without a temporary variable using XOR >>> a = 2 >>> b = 8 >>> a ^= b >>> b ^= a >>> a ^= b >>> a 8 >>> b 2