после загрузки ZLIB ver. 1.2.11 и просматривая RFC1951, я пытаюсь использовать функцию ZLIB.inflate следующим образом:
#include "zlib.h"
int iRslt;
unsigned char buffIn[4]={0x4b,4,0,0};
unsigned char buffOut[16];
z_stream zStrm;
memset(&zStrm, 0, sizeof(zStrm));
zStrm.zalloc = Z_NULL;
zStrm.zfree = Z_NULL;
zStrm.opaque = Z_NULL;
zStrm.avail_in = 0;
zStrm.next_in = Z_NULL;
iRslt = inflateInit(&zStrm);
if(iRslt != Z_OK) return;
zStrm.avail_in = sizeof(buffIn);
zStrm.next_in = buffIn;
zStrm.avail_out = sizeof(buffOut);
zStrm.next_out = buffOut;
iRslt = inflate(&zStrm, Z_NO_FLUSH);
if(iRslt == Z_DATA_ERROR){//-3
//why do I end up here with zStrm.msg -> "incorrect header check"?
}
Мой buffIn содержит заголовок битового потока 011b: BFINAL=1; БТИП=01b; и фиксированный код Хаффмана для символа «a» (0x61), за которым следуют не менее 7 нулевых битов для завершения блока. Очевидно, этого недостаточно; пожалуйста помоги. Спасибо заранее; Боба.
memset()
. - person Mark Adler   schedule 07.02.2021