^不支持的操作数类型:“字节数组”和“ int”(按位运算符)

时间:2019-06-23 09:59:53

标签: python arrays python-3.x operators byte

我正在尝试使用bytearray进行哈希算法的一些计算,但是不断遇到关于^操作数类型的错误。我已经做了其他一些看起来不错的方法,但是使用这种方法会不断出错。下面是代码:

def showstate(a):
    i = 0
    buf = bytearray()
    width = 17
    print (type(a))
    while i < 8 * width:
        buf.append(buf ^  (1 and a[i])<<(7-(i%8)))
        #buf ^= (1 and a[i])<<(7-(i%8))
        #print ("absc")
        if  (((i%8) == 7) and (i)):
            print("%02x"%buf, end = '')
            buf = 0
        i += 1

我已经尝试查看a的数据类型-它说bytearray我认为buf的计算没有任何问题。为什么总是出错:

TypeError: unsupported operand type(s) for ^: 'bytearray' and 'int'

1 个答案:

答案 0 :(得分:0)

问题似乎是有时您将buf视为容器:

buf = bytearray()

有时您将buf视为数字:

print("%02x"%buf, end = '')
buf = 0

有时您会在同一行中同时做这件事:

buf.append(buf ^  (1 and a[i])<<(7-(i%8)))

这两个不同的变量是否需要它们自己的名称,或者当您将buf视为数字时是要索引到它吗?