C++ 在iOS应用程序中解压缩bzip2

C++ 在iOS应用程序中解压缩bzip2,c++,ios,objective-c,7zip,bzip2,C++,Ios,Objective C,7zip,Bzip2,我正在开发一款iOS应用程序,需要不时下载约50MB的数据。bzip2为我提供了最佳压缩率(将大小减少到8MB) 问题是:如何解压缩应用程序中的数据 我做了一些研究——我发现的只有两件事是Keka(但全部源不是公开的)和BZIP2命令行工具的C++源代码,这太长,太复杂了,以至于我无法在我的时间内对应用程序做必要的调整。 我正在寻找类似的东西,这是由Android版本的应用程序使用 如果你知道如何使用7zip而不是bzip2,那就行了——只是效率稍低一点。我建议你静态链接libbz2。在Goog

我正在开发一款iOS应用程序,需要不时下载约50MB的数据。bzip2为我提供了最佳压缩率(将大小减少到8MB)

问题是:如何解压缩应用程序中的数据

我做了一些研究——我发现的只有两件事是Keka(但全部源不是公开的)和BZIP2命令行工具的C++源代码,这太长,太复杂了,以至于我无法在我的时间内对应用程序做必要的调整。 我正在寻找类似的东西,这是由Android版本的应用程序使用


如果你知道如何使用7zip而不是bzip2,那就行了——只是效率稍低一点。

我建议你静态链接libbz2。在Google中查找源代码。

bzip2
源代码构建到一个可以链接到代码中的源代码,只要你有足够好的编译器(我相信iOS就是这样,尽管我还没有尝试过…)

您需要编写的代码如下所示:

int error;
const int MAXSIZE = 4096;    // Or some other decent size.
char buffer[MAXSIZE];
FILE *f = fopen("somefile.bz2", "rb"); 
BZFILE* b = BZ2_bzReadOpen(&error, f, 0, 0, NULL, 0);
do {
   BZ2_bzRead(&error, b, buffer, MAXSIZE);
} while(error != BZ_OK);
BZ2_bzReadClose(&error, b);
您可能需要添加一些更多的“错误”检查,但这个概念应该会起作用[我认为-我只是根据文档中的所有代码以及我过去使用此软件包和类似软件包的经验键入了这些代码]