使用python将keil MDK生成的bin文件转为c语言的数组

前言

笔者最近在做一个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文件转为可定义的数组详细。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白今天也很酷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值