代码之家  ›  专栏  ›  技术社区  ›  jovicbg

“long”对象没有属性“\uu getitem”

  •  -1
  • jovicbg  · 技术社区  · 6 年前

    '02 01 01 21 03 01 02 00 01 20 b6 01 0 26 cd 00 03 30 63 a4 22 01'

    def parse_code(msg):
        buf = (hashlib.sha256(bytearray.fromhex(msg)).hexdigest())
        buf = int(buf, 16)
    
        datetime_now = datetime.now()
        log_date = datetime_now.isoformat()
    
        try:
            prepare_adress = buf[16:22]
            hex_adress = int(prepare_adress, 16)
            new_adress =hex_adress + 0x200
            adress = hex(new_adress).upper()
            id = buf[4:]
            prepare_usage = buf[1:2]
            hex_usage = int(prepare_usage, 16)
            new_usage =hex_usage + 0x200
            usage = hex(new_usage).upper()
            time_a = int(time())
        except Exception as e: 
            print(e)
    

    你知道如何处理这个错误吗?还有一些关于如何将消息转换成十六进制的更好方法的建议?

    1 回复  |  直到 6 年前
        1
  •  2
  •   bruno desthuilliers    6 年前

    现在请注意/您当前的错误原因很明显-这里:

    buf = int(buf, 16)
    

    buf 一个整数。在这里:

    prepare_adress = buf[16:22]
    

    你试着对它进行切片——这毫无意义,整数是标量,而不是序列,不能以任何方式进行下标、切片或迭代。