You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.9如何将十六进制byte数据转换为6809模拟器可用mem列表

Python实现6809汇编二进制数据导入mem列表方案

首先明确核心逻辑:你拿到的原始内容是十六进制编码字符串,只需要先完成十六进制字符串到字节数值的转换,再按需求格式化即可。


前置转换步骤

情况1:直接用给出的十六进制字符串转换

# 替换为你自己的十六进制字符串
raw_hex = "338cfd4f5f10eec9100012126ec90010adc900186e4c12124cb10255270339121232624f5cf1025527046e4c12126ec4"
# 核心转换:十六进制字符串转字节序列
byte_data = bytes.fromhex(raw_hex)

情况2:直接读取本地二进制文件转换

如果是直接读硬盘上的二进制汇编文件,不需要先转成十六进制字符串,可直接读取字节:

with open("你的6809汇编二进制文件路径", "rb") as f:
    byte_data = f.read()

按需求生成对应格式的mem列表

格式1:可打印ASCII带引号,其余输出两位十六进制字符串

mem = []
for val in byte_data:
    # 32~126为可打印ASCII字符区间
    if 32 <= val <= 126:
        mem.append(repr(chr(val)))
    else:
        mem.append(f"{val:02x}")

# 输出拼接后的结果
print(f"mem[{','.join(mem)}]")

输出示例:mem[33,8c,fd,'O','_',10,ee,...]


格式2:带0x前缀的十六进制数值格式

# 如果需要字符串形式带0x前缀用于展示:
mem_str = [f"0x{val:02x}" for val in byte_data]
print(f"mem[{','.join(mem_str)}]")

# 如果需要直接生成整数列表用于模拟器逻辑调用:
mem_int = list(byte_data)
# 直接使用即可,每个元素都是对应字节的整数值,打印时要显示0x可自行格式化

输出示例:mem[0x33,0x8c,0xfd,0x4f,0x5f,0x10,0xee,...]


常见问题说明

你之前得到b'00'这类结果,是因为没有做十六进制编码到实际字节值的解析,只是把十六进制字符串的字符直接转成了bytes类型,用bytes.fromhex()方法即可完成正确转换,该方法完全兼容Python3.9版本。

内容的提问来源于stack exchange,提问作者mwfarrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:12:03