"Unsupported operand type(s) for ^: 'str' and 'str'" 二进制在 Python 3.x

"Unsupported operand type(s) for ^: 'str' and 'str'" with Binary in Python 3.x

我目前正在做一个关于二元运算符的项目。现在我有两个列表,其中包含一系列带有 8 位 1 和 0 的字符串。假设我有这段代码(表示创建两个数组时生成的内容):

arr1 = ['0b01110101', '0b00001111', '0b01001101']
arr2 = ['0b10010100', '0b00000101', '0b00111001']
arr3 = []

我想 运行 一个循环,在该循环中我对每个值执行 XOR 二元运算符。到目前为止,这是我的循环:

for i in len(arr1):
    arr3[i] = arr1[i] ^ arr2[i]

当我 运行 此代码时,我收到此错误消息:

Unsupported operand type(s) for ^: 'str' and 'str'

我试过这样做:

arr3[i] = bin(arr1[i]) ^ bin(arr2[i])

它 returns 这个错误信息:

TypeError: 'str' object cannot be interpreted as an integer

我该如何解决这个问题?

编辑 1:这与评论中标记的内容不重复。我不是在寻找如何执行正常的 XOR 二进制函数。我知道该怎么做。我正在寻找一种方法将这些字符串转换为二进制数,以便我可以对它们使用 XOR 运算符。

bin 是整数的字符串表示。您不能对字符串进行 XOR。

只是做一个整数转换,基数2,转换理解整数,有0b或没有它:

for a1,a2 in zip(arr1,arr2):
    print(bin(int(a1,2) ^ int(a2,2)))

结果:

0b11100001
0b1010
0b1110100

您可以取消引用列表

arr1 = ['0b01110101', '0b00001111', '0b01001101']
arr2 = ['0b10010100', '0b00000101', '0b00111001']
arr3 = []

并修复循环中的错误并使用 appendrange 进行迭代。

for i in range(len(arr1)):       # xrange for Pyhon2
    arr3.append(int(arr1[i], 2) ^ int(arr2[i], 2))

试试这个:

arr1 = ['0b01110101', '0b00001111', '0b01001101']
arr2 = ['0b10010100', '0b00000101', '0b00111001']
arr3 = []

for i, _ in enumerate(arr1):
    xor = int(arr1[i], 2) ^ int(arr2[i], 2)
    arr3.append("0b{0:08b}".format(xor))

输出:

['0b11100001', '0b00001010', '0b01110100']