如何读取数组的c文件,在内存中映射成真正的数组

2020-01-01 17:48发布

介绍下问题提出背景,我的程序中有个90多k的数组,70%以上都是连续的0,我打算用rle算法压缩,估计降低一半以上大小是可行的

初步思路是搞个上位机的命令行程序,读取这个数组c文件,压缩后生成一个bin文件,mdk支持在编译前运行命令,然后mdk装载这个bin文件生成最后的程序文件,整个过程都会自动完成

现在事情还没开始就遇上一个麻烦事,如何读取数组c文件,因为这个3维数组使用嵌套大括号表示数组层次,连续的0其实都是没标出的,编译器当然明白这些,但是如果自己来做的话就要自己解析这个数组c文件到内存里,这个也不是一会儿功夫可以搞定的啊

请问谁有这方面的经验,或者有开源的库可以干这个活呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
styleno1
1楼-- · 2020-01-03 23:45
C运行库启动时的初始化是压缩的,楼主可以尝试。
90K初始化不容易,量少用指定初始化。之前做很多实时数据曲线时,数据就压缩的,不过那里同时只会展开1条。
gwnpeter
2楼-- · 2020-01-04 05:26
 精彩回答 2  元偷偷看……
gwnpeter
3楼-- · 2020-01-04 11:02
也可以考虑使用csv表格文件,然后用c#或者自己熟悉的语言编一个程序,吧csv文件转成bin,然后压缩,然后重新生成c文件
myxiaonia
4楼-- · 2020-01-04 15:52
styleno1 发表于 2016-7-28 09:07
C运行库启动时的初始化是压缩的,楼主可以尝试。
90K初始化不容易,量少用指定初始化。之前做很多实时数据 ...


你的意思是把mdk的压缩初始化用起来吗?有点意思 请问怎么用呢?

不要用const定义这个3维数组???定义内存数组,然后这个初始化内容就会被压缩哦
我尝试了下,不行啊兄弟,代码还是这么大,rw处多出整个大数组,并没有压缩

我估计只有全0的数组才会被压缩,看来这链接器压缩性能也很一般啊
myxiaonia
5楼-- · 2020-01-04 17:54
gwnpeter 发表于 2016-7-28 09:25
在你的数组代码上,加上将数组输出为bin的,文件操作函数。
用tcc直接执行,输出bin文件,然后压缩成另外的 ...

是的  我打算加上压缩后生成bin的c代码,这段代码只对tcc有效
mdk可不能直接一条命令直接输出一个文件吧,tcc确实牛,提供这样的脚本功能
myxiaonia
6楼-- · 2020-01-04 23:30
gwnpeter 发表于 2016-7-28 09:37
也可以考虑使用csv表格文件,然后用c#或者自己熟悉的语言编一个程序,吧csv文件转成bin,然后压缩,然后重新 ...

为何还要生成c文件啊 ,我这些把bin文件放到mdk编译后的程序里去了啊  程序里面用指针调用即可

一周热门 更多>