繁体   English   中英

对 Python 中二进制字符串的每一位进行异或运算

[英]XOR'ing each bit of a binary string in Python

我有两个二进制字符串(不是整数),例如01010010 ,我需要对这两个二进制字符串进行异或,然后再次对结果的每一位进行异或。 这两个结果在0111中异或,现在我想得到结果0 xor 1 xor 1 xor 1 我怎样才能在python中实现呢?

我已经对结果变量中的两个字符串进行了异或,现在我需要找到结果中每一位的异或

a = "0101"
b = "0010"
result = []
for x, y in zip(a, b):
    if x == y:
        result.append('0')
    else:
        result.append('1')
final = []

使用字符串

您可以使用在两个输入上使用的相同逻辑来reduce单个输入:

from functools import reduce

final = reduce(lambda x, y: '0' if x == y else '1', result)

使用整数

或者,您可以使用int(x, 2)将输入转换为整数。 所以你可以有:

result = int(a, 2) ^ int(b, 2)

现在你只需要按位异或result 这在这里提到,基本上是一个奇偶校验,可以很容易地完成(Python >= 3.10)

final = result.bit_count() & 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM