[英]how to xor binary with python
我正在嘗試像這樣使用 python 對 2 個二進制文件進行異或處理,但我的輸出不是二進制文件有什么幫助嗎?
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)
要根據 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()
,然后跳過前兩個字符0b
,因此是bin(y0)[2:]
。
之后,對於這種情況,只需zfill
到長度 - len(a)
。
干杯
由於您嘗試對相同長度的二進制文件執行 XOR,因此以下內容應該可以正常工作:
c=[str(int(a[i])^int(b[i])) for i in range(len(a))]
c=''.join(c)
您可以完全避免格式化。
由於您從字符串開始並想要一個字符串結果,您可能會發現這很有趣,但它僅在它們的長度相同時才有效。
y = ''.join('0' if i == j else '1' for i, j in zip(a,b))
如果它們的長度可能不同,您可以執行以下操作:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.