Tag: 放气

zlib:如何维度avail_out

我想使用zlib来缩小一小块内存(<= 16 KiB)。 输出也存储在内存块中。 这里没有磁盘或数据库访问。 根据文档,我应该反复调用deflate() ,直到整个输入被放气。 在这两者之间,我必须增加输出所在的内存块的大小。 然而,这似乎不必要地复杂,甚至可能效率低下。 据我所知输入的大小,我不能预先确定输出所需的最大大小,然后只需调用一次deflate()吗? 如果是这样,最大输出尺寸是多少? 我假设类似:输入大小+一些字节开销

在C中放气和膨胀(zlib.h)

我正在尝试实现zlib.h deflate和inflate函数来压缩和解压缩char数组(不是文件)。 我想知道以下语法是否正确? 我错过了什么或定义错误的东西? char a[50] = “Hello World!”; char b[50]; char c[50]; // deflate // zlib struct z_stream defstream; defstream.zalloc = Z_NULL; defstream.zfree = Z_NULL; defstream.opaque = Z_NULL; defstream.avail_in = (uInt)sizeof(a); // size of input defstream.next_in = (Bytef *)a; // input char array defstream.avail_out = (uInt)sizeof(b); // size of output defstream.next_out = (Bytef *)b; […]