我有一个文件,其中包含一个使用zlib压缩的嵌入式文件。
我知道压缩文件在主文件中的起始位置,并且具有解压缩后的文件大小,但是不知道压缩文件的终止位置。
我的目标是从其包含的文件中提取压缩文件并将其另存为自己的文件。
鉴于压缩文件的开始位置和解压缩后的文件大小,是否有什么可以告诉我压缩文件的大小或压缩文件结束的地方?
目前,我从zlib标头传递到EOF到一个膨胀函数中。这对于较小的文件来说效果很好,因为inflate函数将在压缩文件结束后丢弃所有数据,并且仅向我返回解压缩的字节。但是,对于较大的文件(压缩文件位于文件顶部附近),我的系统没有足够的内存来将文件的大部分传递给inflate函数。
答案 0 :(得分:1)
zlib流是自终止的。您可以通过解压缩并查看压缩后的长度来找到压缩后的长度。
您提到一些有关内存不足的信息。 zlib的主要功能一次处理一部分流,它们是用于解压缩的inflate*
函数。阅读zlib.h。