首页 > 解决方案 > 包含 0x00 十六进制数时,数组长度返回错误值

问题描述

这是我正在运行的代码(使用 Python 3.7):

barray = {
0x22, 0x00, 0x43, 0x61, 0x62, 0x74, 0x72, 0x6f,
0x6e, 0x69, 0x78, 0x00, 0x01, 0x00, 0x41, 0x54,
0xff, 0xff, 0xff, 0xff
}
asc = '"  C a b C a b n i x    A T ÿ ÿ ÿ ÿ'


def hex_to_uint(hexarray):
    length = len(hexarray)
    rows = (length-4)/8
    print(length)
    print(rows)
    # todo write rest of function

我所尊重的是将数字 20 和 2 打印在屏幕上。但是我得到 15 和 1.375。

我认为这与数组中的数字 0x00 有关,但我不知道。

标签: pythonpython-3.x

解决方案


您似乎创建了 aset()而不是 a list()。python 中的列表是使用方括号创建的,如下所示:[1, 2, 3]. 一个集合总是会去掉其中的重复元素。您可以在此处阅读内置类型。

我认为这与您的错误有关,因为您将其称为“数组”,但事实并非如此。更改括号并重新运行代码以查看它是否有效。


推荐阅读