2024-05-13 02:04:53 发布
网友
我正尝试使用类似于python的xor 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)
因为您是从字符串开始并希望得到字符串结果,所以您可能会发现这很有趣,但只有当它们的长度相同时,它才起作用。
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
要根据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
bin()
0b
bin(y0)[2:]
zfill
len(a)
干杯
因为您是从字符串开始并希望得到字符串结果,所以您可能会发现这很有趣,但只有当它们的长度相同时,它才起作用。
如果长度不同,您可以:
要根据OP的请求将Xor'd二进制文件获取相同的长度,请执行以下操作:
将二进制字符串转换为以2为基数的整数,然后
XOR
,然后bin()
,然后跳过前两个字符,0b
,因此bin(y0)[2:]
。在那之后,只要
zfill
到长度-len(a)
,对于这个例子。干杯
相关问题 更多 >
编程相关推荐