我希望我的程序能够使用zlib,lzma,lzo和bzip2压缩算法。
是否有适用于C的压缩库,可以使用多种算法(如libmcrypt支持多种加密模式和算法)进行模拟?
期待这样的事情:
struct compressor c;
universal_compressor_init(&c, "lzma", 7 /* compression level */);
universal_compressor_compress(&c, inputbuf, inputsize, outputbuf, &outputsize);
universal_compressor_save_state(&c, statebuf, &statesize);
注意:它不是关于zip / rar / 7z / tar / cpio和其他存档格式,而是关于压缩原始缓冲区。考虑压缩网络协议或随机访问压缩块设备(如cloop)。
答案 0 :(得分:3)
LibArchive符合您的要求。
从介绍:
编辑:处理原始流(至少直到他们从libarchive中拆分libfilter),考虑使用Boost::iostreams或libbu++(仅在GitHub上找到)libarchive库的特点:
- 支持各种存档和压缩格式。
- 强大的自动格式检测,包括存档/压缩组合,例如tar.gz. ...
答案 1 :(得分:0)
我建议 7-zip (http://www.7-zip.org/sdk.html)。压缩速度和尺寸都没有找到任何可以击败它的东西。