最近在学习Python,发现Python语言非常适合文件的批处理操作。本文将介绍一下用Python如何实现将一个二进制bin文件转化为一个常量数组的.c文件存储起来。这为我们在一些没有文件系统不能调用fopen、fread之类的工程中提供了便利,我们可以以常量数组的形式去访问这些常量数据;另外在算法性能优化时,也可以利用此程序将一些复杂浮点运算提前变成表格,以查表的形式来提高运算效率。当然,转化为常量数组可能会比较耗费内存。闲话少说,代码如下:

 import os

 def read_data_from_binary_file(filename, list_data):
f = open(filename, 'rb')
f.seek(0, 0)
while True:
t_byte = f.read(1)
if len(t_byte) == 0:
break
else:
list_data.append("0x%.2X" % ord(t_byte)) def write_data_to_text_file(filename, list_data,data_num_per_line):
f_output = open(filename, 'w+')
f_output.write('#include<sys/type.h> \n')
f_output.write('const unsigned char test_img[] = \n')
f_output.write('{\n ')
if ((data_num_per_line <= 0) or data_num_per_line > len(list_data)):
data_num_per_line = 16
print('data_num_per_line out of range,use default value\n')
for i in range(0,len(list_data)):
if ( (i != 0) and(i % data_num_per_line == 0)):
f_output.write('\n ')
f_output.write(list_data[i]+', ')
elif (i + 1) == len(list_data):
f_output.write(list_data[i])
else:
f_output.write(list_data[i]+', ')
f_output.write('\n};')
f_output.close() list_data = []
input_f = raw_input("Please input source bin file_name:")
output_f = raw_input("Please input dest C file name:")
data_num_per_line = input("Please input a num whitch indicates how many data for one line:")
read_data_from_binary_file(input_f, list_data)
write_data_to_text_file(output_f, list_data,data_num_per_line )

用Python将二进制文件转化为数组并以文件形式存储的更多相关文章

  1. Python web前端 08 字符串 数组 json

    Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...

  2. 初学Python写二进制文件

    初学Python写二进制文件 把一个图片的16进制数据保存到一个txt文本,从这个txt文本读出并保存为二进制文件jpg图片文件.说明:图片读出的0xff粘贴ff到文本中,读出时是字符串的”ff”. ...

  3. xml格式的数据转化成数组

    将得到的xml格式的数据转化成数组 <?php //构造xml $url = "http://api.map.baidu.com/telematics/v3/weather?locat ...

  4. yii2得到的数据对象转化成数组

    yii2得到的数据对象转化成数组需要用到asArray().1.Customer::find(['id' => $id])->asArray()->one();2.$model = ...

  5. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  6. python操作二进制文件

    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...

  7. 在python 中有时候我们用数组

    在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率, 类似于R的向量化操作,是的数据的操作趋于简单化,在python 中是使用numpy模块可以进行数组和矢量计算. 下面来看下简单 ...

  8. Yii框架AR对象数据转化为数组

    demo函数作用:将AR对象数据转化为数组 局限:仅用于findAll的多维数组,find一维数组可以先转化为多维数组的一个元素在使用 function actionIndex() { $data = ...

  9. 将childNodes返回的数据转化维数组的方法

    //将childNodes返回的数据转化为数组的方法 function convertToArray(nodes){ var array=null; try{ array=Array.prototyp ...

随机推荐

  1. C# 过滤字典中的数据 并将过滤后的数据转成新的字典对象

    Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("); dic. ...

  2. ArcEngine介绍

    一.ArcEngine简介ArcEngine被定位为一个嵌入式的产品,它并非面向最终用户,而是一个面向开发者的产品.对于繁冗的GIS开发工作而言,理想的解决方案是一个基于组件的实用的开发框架,且该框架 ...

  3. 安装MySQL数据库并开启远程访问

    一.安装MySQL数据库 MySQL安装在系统盘下(C:\Program Files),方便系统备份. 1.双击安装程序,勾选“I accept the license terms”,点击“Next” ...

  4. 小黄车ofo法人被限制出境,它究竟还能撑多久?

    因为季节的原因,现在正是骑车的好时候,而且北京也开通了一条自行车的专用路.但就是在这么好的时候,我们发现,路边的小黄车却越来越少了,而且它的麻烦还不断! ofo法人被限制出境 6月12日消息,据上海市 ...

  5. 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra

    题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...

  6. libusb读写

    https://blog.csdn.net/u012247418/article/details/83684980 https://github.com/crazybaoli/libusb-test ...

  7. 使用CreateRemoteThread注入DLL

    DLL: // dllmain.cpp : Defines the entry point for the DLL application. #include "stdafx.h" ...

  8. Linux下C++编译(代码高亮自动换行)

    1.环境准备 在ubuntu中要想编译c程序可以安装gcc编译器,编译c++的话就不能使用gcc了,要使用g++编译器. 安装gcc或是g++可以在新立得软件包管理器中直接搜索后安装或是使用终端文字命 ...

  9. 如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果

    如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果 首先列出sprite围绕一个点旋转的公式,这个可以自己推导,假设sprite的起始位置为(x1,y1),围绕旋转的中心点 ...

  10. 交叉熵和softmax

    深度学习分类问题结尾就是softmax,损失函数是交叉熵,本质就是极大似然...