gpt4 book ai didi

c - zlib raw deflate/inflate 输出不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:05 25 4
gpt4 key购买 nike

我用这个例子:http://zlib.net/zpipe.c几乎从字面上看,由于我想使用原始放气,所以进行了一些改动:

deflateInit() -> deflateInit2(&strm, 8, Z_DEFLATED, -15,MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);inflateInit() -> inflateInit2(&strm, -15);

source 和 dest 是 deflate 上的:

FILE* source = fopen("test.txt", "r+");
FILE* dest = fopen("output", "w+");

在膨胀时:

 FILE* src = fopen("output", "r+");
FILE* dst = fopen("test2.txt", "w+");

我压缩了一个 601.7kb 的文本文件,然后我解压了它,但是在膨胀后的文件中丢失了大约 8kb。怎么可能?

最佳答案

将 raw 与 zlib 结合使用对于流来说很麻烦。上个月我深入了解了这一点。循环终止条件变得非常奇怪(流上的 EOF 与完全膨胀)。 zlib(似乎)希望流末尾的校验和强制输出最后一个 block ,而展开的数据不会发生这种情况。如果你一次给整个 block 充气(这正是我所需要的)它工作正常但我永远无法展开以可靠地使用多 block 循环工作。它也因数据而异。我进行了一些终止调整,可以正确终止某些数据,但不能正确终止其他数据。

关于c - zlib raw deflate/inflate 输出不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com