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

如何使用Python bincopy包为Intel Hex文件添加Extended Linear Address(04)数据行

解决bincopy操作Intel Hex文件添加指定地址行报错问题

报错原因

你调用bincopy.BinFile.add()方法时直接传入单行Intel Hex字符串,该方法默认会将输入当做完整的镜像文件解析,单独一行不符合完整Intel Hex文件的格式要求,因此触发格式不支持的报错。

解决方法

分两种方案,可根据你的需求选择:

方案一:使用bincopy原生API添加(推荐)

bincopy本身支持32位地址输入,不需要手动处理地址分段,工具会自动管理扩展地址记录和行结构,生成规范的Intel Hex文件:

import bincopy

# 读取原始hex文件
f = bincopy.BinFile("file.hex")
# 目标32位地址
target_addr = 0x803300B0
# 待写入的32字节数据,从你准备的行中提取即可
write_data = bytes.fromhex("06156745805F0614C2FE3CEB0284029506F067101F0006F1C21E82087AE86E1CA3")
# 写入数据,overwrite参数可根据是否覆盖同地址数据调整
f.add(write_data, address=target_addr, overwrite=False)
# 导出为新的hex文件
f.to_file("output.hex", format="intel")

方案二:手动插入行(需严格控制行顺序时使用)

如果你必须将行精准插入到原文件第4行的位置,可以直接读写文件手动插入,不需要通过bincopy的add接口:

# 读取原文件所有行
with open("file.hex", "r", encoding="utf-8") as fr:
    lines = fr.readlines()
# 待插入的目标行,已提前校验校验和正确性
insert_line = ":2000B00006156745805F0614C2FE3CEB0284029506F067101F0006F1C21E82087AE86E1CA3\n"
# 插入到第4行位置(列表索引从0开始,插入后原第4行自动后移)
lines.insert(3, insert_line)
# 写入新文件
with open("output.hex", "w", encoding="utf-8") as fw:
    fw.writelines(lines)

注意:手动插入前需确认目标行的偏移地址和前序扩展线性地址记录(类型04)匹配,你当前插入位置的前序扩展地址为0x8033,目标行偏移为0x00B0,刚好组成目标32位地址0x803300B0,符合格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:45:00