Проверил вариант с InflateBack16.05.11 18:58 Число просмотров: 2628 Автор: developertmp Статус: Незарегистрированный пользователь Отредактировано 16.05.11 18:58 Количество правок: 1
Есть deflated payload архива (без header & footer ). Извесна также длина inflated файла.
Как праильно добавить header/footer чтобы получить welformed gzip? Какую либу использовать, чтобы разархивировать затем? minizip ? zlib?
Понятно, что надо смотреть спек... Но может есть идеи которые бы ускорили дело?
Если я правильно понял,11.05.11 12:41 Автор: Ustin <Ustin> Статус: Elderman
Не совсем то, но всё равно спасибо.12.05.11 05:31 Автор: developertmp Статус: Незарегистрированный пользователь Отредактировано 12.05.11 05:32 Количество правок: 1
Задача немного другая. У меня есть кусок сжатого gzip - это не полноценный gzip. Отличие от нормального gzip - у этого файла нет заголовка (10 байт) и футера (8 байт). Заголовок несложно прикрутить. А вот футер невозможно, поскольку он содержит CRC подсчитанный по исходному (не сжатому) файлу. Если прикрутить пустой футер, то например 7Z разархивирует файл, но при этом обругется на CRC.
Мне надо это сделать программно, то есть разархивировать файл без хедера и футера. В ZLIB есть такая фунция InflateBack. Но уж сильно мудрено её использование. Нет ли нормального примера?
В дельфи написал:12.05.11 10:31 Автор: Ustin <Ustin> Статус: Elderman Отредактировано 12.05.11 10:36 Количество правок: 2
uses zlib;
...
procedure ubzlib(srcfn:string);
...
begin
s:=FileToString(srcfn);
s:=substr(s,1,length(s)-4); src:=TStringStream.Create(s);
dest:=TFileStream.Create(srcfn+'.dc',fmCreate);
t:=TDecompressionStream.Create(src);
repeat
bytesread:=t.Read(mainbuffer,1024);
dest.Write(mainbuffer,bytesread);
until bytesread<1024;
t.free;
src.free;
dest.free;
end;
...
При наличии и отсутствии жирной строки всё распаковывалось без ошибок (результат правильный, исключений не вызывает).
Проверил вариант с InflateBack16.05.11 18:58 Автор: developertmp Статус: Незарегистрированный пользователь Отредактировано 16.05.11 18:58 Количество правок: 1