我正在尝试使用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'
答案 0 :(得分:0)
问题似乎是有时您将buf
视为容器:
buf = bytearray()
有时您将buf
视为数字:
print("%02x"%buf, end = '')
buf = 0
有时您会在同一行中同时做这件事:
buf.append(buf ^ (1 and a[i])<<(7-(i%8)))
这两个不同的变量是否需要它们自己的名称,或者当您将buf
视为数字时是要索引到它吗?