python实现bin2c

参考链接:https://www.cnblogs.com/gwb-tech-blog/p/6500763.html

  • 功能:将二进制文件转化成常量数组的形式存储,并输出到目标文件中
  • 作用:为我们在一些没有文件系统不能调用fopen、fread之类的工程中提供了便利,我们可以以常量数组的形式去访问这些常量数据。
#!/usr/bin/env python3

def readBinFile(filename, list):
    '''
    将bin文件读取到传入的列表中
    '''
    f = open(filename, "rb")
    while True:
        byte = f.read(1)
        if len(byte) == 0:
            break
        else:
            list.append("0x{:02X}".format(ord(byte)))   #list_data.append("0x%.2X" % ord(t_byte))
    # print(list)

def writeCFile(filename, arryname, list, line_num):
    '''
    将列表中的内容写到目标文件中
    '''
    f = open(filename, "w+")
    size = len(list)
    # if (line_len > 10)
    assert(line_num > 0)
    f.write("const char " + arryname + "[" + str(size) + "] = {\n")
    for i in range(0, size):
        if ((i + 1) % line_num == 0 and i != size - 1): # 达到一行的数量,换行
            f.write(list[i] + ",\n") 
        elif i == size - 1: # 最后一个数据,不加逗号
            f.write(list[i])
        else: # 正常情况
            f.write(list[i] + ", ")
    f.write("}\n")
    f.close()

#从键盘获取 
binFileName = input("please input bin file name:")
cFileName = input("please input dest file name:")
arryName = input("please input arry name:")
line_num = int(input("please input data number per line:"))

list = []
readBinFile(binFileName, list)
writeCFile(cFileName, arryName, list, line_num)
print("success! please open {} to check".format(cFileName))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值