私はこのようなpythonを使って2つのバイナリをxorしようとしていますが、私の出力はバイナリではありません 助けてください?Pythonでバイナリをxorにする方法
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a)^int(b)
print y
私はこのようなpythonを使って2つのバイナリをxorしようとしていますが、私の出力はバイナリではありません 助けてください?Pythonでバイナリをxorにする方法
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a)^int(b)
print y
a = "11011111101100110110011001011101000"
b = "11001011101100111000011100001100001"
y = int(a,2)^int(b,2)
print '{0:b}'.format(y)
動作するはずです。答えは同じ長さではありません。 –
ないと私に答えを与えていない –
答えが同じ長さで出力されるようにするには、 'print '{0:0 {1} b}'フォーマット(y、len(a))' –
あなたは、文字列で始まる文字列の結果を望んでいるので、あなたは、これは面白いかもしれないが、彼らは同じ長さである場合にのみ動作します。
y = ''.join('0' if i == j else '1' for i, j in zip(a,b))
彼らはあなたが行うことができ、異なる長さであるかもしれない場合は、次の操作を行い、OPの要求どおりに、同じ長さにXOR演算バイナリを取得するには
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
:
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:]
です。
その後、このケースでは、len(a)
の長さにちょうどzfill
となります。
乾杯
バイナリ形式で印刷する、それはそれはもちろん、同じ長さ – karthikr