Wie kann ich einen gzip-Stream mit zlib dekomprimieren?
Gzip-format-Dateien (erstellt mit der gzip
Programm, zum Beispiel) verwenden Sie die "deflate" - Kompression Algorithmus, welche die gleiche Kompressions-Algorithmus, wie das, was zlib verwendet. Jedoch, wenn Sie zlib zum aufblasen eine gzip-komprimierte Datei, die Bibliothek gibt eine Z_DATA_ERROR
.
Wie kann ich mit zlib zu Dekomprimieren gzip-Datei?
InformationsquelleAutor der Frage Greg Hewgill | 2009-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu Dekomprimieren gzip-format-Datei mit zlib -, call
inflateInit2
mit derwindowBits
parameter wie16+MAX_WBITS
wie diese:Wenn Sie dies nicht tun, zlib beklagen sich über einen schlechten stream-format. Standardmäßig wird die zlib erstellt streams mit einer zlib-header, und auf aufblasen nicht erkennen die verschiedenen gzip-header, es sei denn, Sie erzählen es so. Dies ist zwar dokumentiert ab version 1.2.1 der
zlib.h
header-Datei, ist es nicht in der zlib-Handbuch. In der header-Datei:InformationsquelleAutor der Antwort Greg Hewgill
python
zlib
- Bibliothek unterstützt:zlib
komprimierten format)deflate
komprimierten format)gzip
komprimierten format)Python
zlib
Modul unterstützt diese auch.Wahl windowBits
Aber
zlib
Dekomprimieren kann all diese Formate:deflate
- format, verwenden Siewbits = -zlib.MAX_WBITS
zlib
- format, verwenden Siewbits = zlib.MAX_WBITS
gzip
- format, verwenden Siewbits = zlib.MAX_WBITS | 16
Siehe Dokumentation in http://www.zlib.net/manual.html#Advanced (Abschnitt
inflateInit2
)Beispiele
test data:
offensichtliche test für
zlib
:test für
deflate
:test für
gzip
:den Daten ist auch kompatibel mit
gzip
Modul:automatische header-Erkennung (zlib oder gzip)
hinzufügen
32
zuwindowBits
löst header detectionmit
gzip
stattFür
gzip
Daten mit gzip-header, die Sie verwenden könnengzip
Modul direkt; aber bitte denken Sie daran, dass unter der Haubegzip
verwendetzlib
.InformationsquelleAutor der Antwort dnozay
Die Struktur von zlib und gzip ist anders. zlib verwendet RFC 1950 und gzip verwendet RFC 1952
so haben unterschiedliche Kopf-aber den rest haben die gleiche Struktur und folgt der RFC 1951.
InformationsquelleAutor der Antwort josep fon
Node.js
Installation
zlib
mit GarnInformationsquelleAutor der Antwort itz-azhar