中文页 | English
FastLZ 是一个快速无损压缩库, 仅包含两个文件, 使用简单, 易于集成。 这个 FastLZ 库是 RT-thread 针对官方FastLZ的C库的移植, 有关 fastlz 的更多信息,请参阅http://fastlz.org/index.html 。
使用 menuconfig
RT-Thread online packages --->
miscellaneous packages --->
[*] Fastlz: A portable real-time compression library
Enable using fastlz sample;latest_version .该示例为一个简单的文件压缩和解压的例程,需要依赖文件系统,用到的命令有两个-c和 -d, -c命令压缩一个文件到另一个文件,-d命令解压一个文件到另一个文件。
使用方式:
msh cmd 压缩: fastlz_test -c /file.bin /file.cmprs.bin
msh cmd 解压: fastlz_test -d /file.cmprs.bin /file_dcmprs.bin
msh />fastlz_test -c /file.bin /file.cmprs.bin
[fastlz]compress start : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[fastlz]compressed 469848 bytes into 363495 bytes , compression ratio is 77%!
msh />
msh />fastlz_test -d /file.cmprs.bin /file_dcmprs.bin
[fastlz]decompress start : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[fastlz]decompressed 363495 bytes into 469848 bytes !
FastLZ 源码中使用了静态内存分配,预置了一个 32Kbytes 大小的 buffer,占用堆栈资源过大,修改了源码,使用动态内存分配替换原有的静态内存分配。
对源码 fastlz.c 进行如下变动,移植官方代码的时候需要注意:
添加动态内存分配定义
#include <rtthread.h>
#define malloc rt_malloc
#define free rt_free
使用 malloc 为 htab 分配内存
const flzuint8* htab[HASH_SIZE];
替换为
const flzuint8** htab = (const flzuint8**)malloc(sizeof(flzuint8*) * HASH_SIZE);
在 return 前使用 free 释放内存