缘由:
项目中用到了屏幕,一款TFT LCD屏幕,需要做界面。其中有一些图片的界面,图片是已经设计好的,需要将图片转成数组,然后放到工程中使用。图片少的时候还可以一个个的转换,放到工程中,后来图片多了,需要放到片外的Flash,这个时候需要将图片转换为Bin文件,下载到外部Flash中。根据这个需求,做了一个小工具来做转换。
功能简介:
例如有两个文件
文件 file001.c 内容:const unsigned char array001[4] = {0x11,0x11,0x11,0x11};
文件 file002.c 内容:const unsigned char array001[4] = {0x12,0x12,0x12,0x12};
将上述两个文件file001.c和file002.c中数组的数值提取出来,保存到output.bin中。
工具界面:
使用方法:
1. 点击,初始化,会将之前生成的log.txt与output.bin删除掉。
2. 点击,添加数组,选择Demo数据中的各个文件,可以一次选择一个,可以一次选择多个。
添加后,会生成一个log.txt,里面显示了数组被添加的顺序。
生成output.bin,这个是所有数组提取后生成的bin文件。
关于Demo数据
更多Demo数据,请看:https://github.com/ensky16/FileToBin/tree/master/Release/DemoData/arrayTxt
1. 1 文件名字和文件中的数组名建议使用英文。
2.1 块注释可以正常识别
例如,如下数据,可以正确识别。
const unsigned char array001[4] = {0x12,/test data******/ //只提取0x12
0x12, /8test 0x88******/ //只提取0x12
//0xAB,0xCD //一个字节都不提取
0x12,0x12 //提取0x12 0x12
};
2.2行注释暂时无法正常识别。
如果有行注释,那么本行数据都会被放弃掉,这个地方没有处理好,所以先不要使用行注释。 例如: 0xAA, //this is 0x12 那么这一行数据都会被放弃掉,0xAA并不会被提取出来。
数据格式目前只支持0xAA这一类,必须带有0x. 如果数据是半个字节,比如0xA,那么会被补齐,补为0x0A.
2.3选择文件的时候,注意看文本框,如果文本框中的文件名字显示不完整了,那么就少选择一个文件。比如一次选择100个文件,发现到第99个的时候,文件名字已经不完整了,那么一次就最多选择98个文件。
开发IDE:VisualStudio2010,C,C++
软件下载:https://download.csdn.net/download/qingtianjushi/12555428
SourceCode:https://github.com/ensky16/FileToBin