【问题标题】:python3.9 'byte' data handling [closed]python3.9'字节'数据处理[关闭]
【发布时间】:2021-08-26 19:15:53
【问题描述】:

我正在开发一个用于教育目的的 6809 python 处理器模拟器。

我在硬盘上有一个简短的二进制文件。数据是摩托罗拉 MC6809 的原始汇编器输出,内容如下:

0000300000338cfd4f5f10eec9100012126ec90010adc900186e4c12124cb10255270339121232624f5cf1025527046e4c12126ec4ff00000000

实际代码数据:

338cfd4f5f10eec9100012126ec90010adc900186e4c12124cb10255270339121232624f5cf1025527046e4c12126ec4

使用 python3.9 如何将其放入列表 mem[] 中:

mem[00,00,30,00,00,33,8c,fd,4f,5f,...]

我怀疑因为这里涉及到 ascii 字符,所以需要引号

mem[0x00,0x00,0x30,0x00,0x00,0x33,0x8c,0xfd,0x4f,0x5f,...]

我似乎能做的就是将数据恢复为

mem[b'00',b'00',b'30',b'00',b'00',b'33'.b'8c',b'fe',b'4f',b'5f',...]

但我似乎无法将这些字节值转换为任何可用的值。

我已经尝试了六种方法,但结果有些可疑/无法使用。

【问题讨论】:

  • 这能回答你的问题吗? Reading a binary file with python
  • "一个列表内存[]" 什么?这在 Python 中没有任何意义。什么,究竟是您需要的对象?
  • 您需要准确地告诉我们您的输入是什么,以及准确地告诉我们您要创建什么。否则,这不是 StackOverflow 的主题。

标签: python-3.x data-conversion


【解决方案1】:

您的问题暗示您有一个充满 ASCII 字符的文件,但您的自我回答与将单个字节转换为整数相矛盾。

原来字节已经是整数了。您需要做的就是将读取的字节转换为列表。您可能可以直接使用字节对象,但我该判断谁。

with open("/home/me/Documents/Sources/procproject.BIN", "rb") as memin:
    mem = list(memin.read())

【讨论】:

  • 是的,这就是答案。
【解决方案2】:

感谢您的时间和回复
struct 并不是一个真正简单的方法,但我发现了一种相当有趣且简单的方法来将字节数组转换为十六进制整数数组

===========

内存 = [] memin = open("/home/me/Documents/Sources/procproject.BIN", "rb") 而真: mp = 字节(memin.read(1)) 如果 mp == b'': 休息 mem.append(hex(int.from_bytes(mp, 'big'))) #这就是魔法# memin.close() 内存=内存[5:] 内存 = 内存[:-5]

===========
像魅力一样工作

【讨论】:

  • 这不是一个“十六进制整数”数组。这是字符串对象的list。不知道为什么你会认为这很有用。你真的应该仔细考虑@MarkRansom 的答案
猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2011-06-22
  • 2014-11-13
  • 2015-10-24
相关资源
最近更新 更多