前言
笔者最近在做一个ISP 给程序升级的小demo,需要用用到bin文件,众所周知.bin文件不可以直接在程序中直接发送,因此需要将.bin文件转为c语言的数组,然后再将程序中通过发送数组的形式来将我们的.bin文件发送给单片机。
1、准备
- Python
确保您的电脑有python的环境。
没有的话需要安装,这里默认大家已经安装好了。
- Pycharm
用来运行python环境。
2、 程序设计思路
将mdk或者是您想要转换的.bin文件,复制到您的工程目录下面,然后运行程序就可以在指定的目录下生成您想要的c数组
3、程序设计
打开Pycharm,在任一非中文路径新建工程。
4、Python程序
def bin_to_c_array(bin_filename, c_array_filename):
try:
# 读取二进制文件
with open(bin_filename, "rb") as bin_file:
bin_data = bin_file.read()
# 将二进制数据转换为十六进制表示
hex_data = bin_data.hex()
# 分割十六进制数据为每两个字符一组
hex_bytes = [hex_data[i:i + 2] for i in range(0, len(hex_data), 2)]
# 创建C语言数组格式的字符串
c_array = 'unsigned char binary_data[] = {\n'
line_length = 16 # 每行显示的元素数量
for i, byte in enumerate(hex_bytes):
if i > 0:
c_array += ", "
if i % line_length == 0 and i != 0:
c_array += '\n'
c_array += f"0x{byte}"
c_array += '\n};\n'
# 将C语言数组格式的字符串写入文本文件
with open(c_array_filename, "w") as c_file:
c_file.write(c_array)
print(f"转换完成 结果保存到C数组中 {c_array_filename}")
except Exception as e:
print(f"An error occurred: {e}")
# 调用函数,替换为二进制文件名和目标文本文件名
bin_to_c_array('demo.bin', 'demo.txt')
这里设计了一个函数,将bin文件转为c数组,传入的参数是bin文件和输出的c数组名。
5、输出结果
将您要转换的bin文件复制到您的工程下面,然后修改您的函数传入参数和输出参数即可。
这里笔者将demo.bin文件转为c数组,结果如下:
总结
这篇文章主要是介绍使用Python语言将Keil MKD5生成的bin文件转为可定义的数组详细。