转换缓冲区表示 int little endian 列表 Python class

Convert buffer repesents list of int little indian Python class

我正在尝试从表示为字符串的缓冲区中获取数据,

示例:

得到:

str = "0004000001000000020000000A000000"


class MyData:
    length
    some_data
    array_data
    buf_data

data = parse(str)

除了:

length=1024, some_data=1, array_data=[2,10], buf_data="000000020000010"

解释:

length=1024,因为 8 个数字“00040000”用小印度语表示一个十六进制数

和其他人一样的想法, “00040000 01000000 0200000 00A000000”

1024、1、2、10

有什么想法吗?

我有一些解决方案,但是太乱了,不容易支持

这是一种方法:

class MyData:
    mmap = [16**1, 16**0, 16**3, 16**2, 16**5, 16**4, 16**7, 16**6]
    def __init__(self, buffer):
        self.buffer = buffer
        self.integers = []
    def get_integers(self):
        if len(self.integers) == 0:
            for i in range(0, len(self.buffer), 8):
                a = 0
                for x, y in zip(self.buffer[i:i+8], self.mmap):
                    a += int(x, 16) * y
                self.integers.append(a)
        return self.integers

mydata = MyData('0004000001000000020000000A000000')

print(mydata.get_integers())

输出:

[1024, 1, 2, 10]

注意:这专门针对 32 位无符号值