Python - 将字节数组映射到不同的 Python 变量

问题描述

我正在处理从 EEPROM 芯片转​​储的数据块。我正在做一些逆向工程。我将它作为数组读入 python(这是一个示例片段):

my_array = [63,67,62,127,106,241,65,219,249,02,03,05,255,01,03]

例如我知道:

  • 前 3 个字节是带有设备序列号的 ASCII 字符串 [63,62]
  • 以下 4 个字节是一个 32 位整数(小端!)[127,65]
  • 以下2个字节是两个8位变量[219] [249]
  • 以下 4 个字节是 BCD 固定十进制 [02,03](即 23.53)
  • 以下2个字节为空[255,255]
  • 以下 3 个字节是 8 位变量,带有单个位标志设置 [01,03]

现在...其中一些我知道,一些是猜测,在我的情况下这并不重要,因为我总共只寻找 3 个变量。这个想法是我转储内存芯片,修改值并上传回来。

不得不处理像这样混乱的字节很烦人。不同的数据类型、长度、字节序等。我想要的是某种映射类,我可以在其中放入数组,然后定义内存空间到 python 变量的映射。我可能需要为一些奇怪的函数添加 get/set 函数,比如带小数点的 BDC,但没关系。

我想象这看起来像这样(更改前 3 个字节中的串行代码):

my_array = [63,03]

my_map = {### some mapping of variable names,their length,type,etc###}

data_block = mapper(my_array,my_map)
data_block.serial = 'abc'
print(data_block)

[61,63,03]

有没有一种聪明的方法来做到这一点?也许是一个图书馆/工具?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)