web-dev-qa-db-ja.com

pythonでバイナリをxorする方法

このようにpython=を使用して2つのバイナリをxorしようとしていますが、私の出力はバイナリではありませんか?

a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a) ^ int(b)
print y
16
user1793032
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a,2) ^ int(b,2)
print '{0:b}'.format(y)
23
Robᵩ

OPの要求に従って、Xor'dバイナリを同じ長さにするには、次のようにします。

_a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a, 2)^int(b,2)
print bin(y)[2:].zfill(len(a))

[output: 00010100000000001110000101010001001]
_

バイナリ文字列を整数ベース2、次にXOR、次にbin()に変換し、最初の2文字、_0b_をスキップします。したがって、bin(y0)[2:]になります。
その後、この場合はzfillまでの長さ-len(a)にします。

乾杯

7
BigH