8

我希望我的程序能够使用 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)。

4

2 回答 2

3

LibArchive满足您的要求。

从介绍:

libarchive 库功能:

  • 支持多种归档和压缩格式。
  • 强大的自动格式检测,包括归档/压缩组合,例如 tar.gz。...

编辑:为了处理原始流(至少在它们从 libarchive 中拆分 libfilter 之前),请考虑使用Boost::iostreamslibbu++(刚刚在 GitHub 上找到)

于 2013-05-04T21:24:46.810 回答
0

我推荐7-zip ( http://www.7-zip.org/sdk.html )。我还没有找到任何东西可以在压缩速度和大小方面击败它。

于 2013-05-04T22:23:53.020 回答