【问题标题】:unsupported operand type(s) for ^: 'byte array' and 'int' (bitwise operator)^ 不支持的操作数类型:“字节数组”和“int”(按位运算符)
【发布时间】:2019-06-23 09:59:53
【问题描述】:

我正在尝试使用 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'

【问题讨论】:

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


    【解决方案1】:

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

    buf = bytearray()
    

    有时您会将buf 视为一个数字:

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

    有时您会在同一行中同时进行这两种操作:

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 2015-01-17
      • 2016-09-07
      • 2022-01-03
      • 2018-12-13
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多