【发布时间】:2017-05-25 01:56:30
【问题描述】:
我目前正在做一个关于二元运算符的项目。现在我有两个列表,其中包含 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])
并返回此错误消息:
TypeError: 'str' object cannot be interpreted as an integer
我该如何解决这个问题?
编辑 1:这不是它在 cmets 中被标记的内容的副本。我不是在寻找如何执行正常的 XOR 二进制函数。我知道该怎么做。我正在寻找一种将这些字符串转换为二进制数的方法,以便我可以对它们使用 XOR 运算符。
【问题讨论】:
-
将它们转换为整数。
int('0b00111001', 2) == 57。所有位运算符都适用于整数。 -
如果你“取消引用”列表(arr1,arr2...)应该可以工作。
标签: python string integer binary-operators