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
相关产品推荐
相关产品推荐

