python将二进制数据的bin文件转换成16进制数组形式的C源文件

"""
将二进制数据的bin文件转换成C语言数组的形式并保存为 .c 源文件
"""
import sys


def main():
    if not sys.argv[1]:
        print("bin file error")
        return
    binListData = []
    # 读取二进制文件存放到list列表中
    file = open(sys.argv[1], 'rb')
    file.seek(0, 0)
    while True:
        binByte = file.read(1)
        if len(binByte) == 0:
            break
        else:
            binListData.append("0x%.2x" % ord(binByte))
    file.close()

    # 将列表中的数据写入到 .c 源文件中
    fileOutput = open("bin2c.c", 'w')
    fileOutput.write("unsigned long hexLength = {};\n".format(len(binListData)))
    fileOutput.write("unsigned char hexData[] = \n")
    fileOutput.write("{\n")
    for i in range(len(binListData)):
        if (i != 0) and (i % 16 == 0):
            fileOutput.write("\n")
            fileOutput.write(binListData[i] + ",")
        elif (i + 1) == len(binListData):
            fileOutput.write(binListData[i])
        else:
            fileOutput.write(binListData[i] + ",")
    fileOutput.write("\n};")
    fileOutput.close()
    print("bin file to C array file success!!!")


if __name__ == '__main__':
    main()

#运行:
#编辑一个bat批处理脚本文件,如下所示,双击该bat文件即可
#python bin2c.py test.bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值