[解決済み] zlib で gzip ストリームを伸長するには?
質問
Gzip 形式のファイル (
gzip
プログラムで作成されたもの) は "deflate" 圧縮アルゴリズムを使用します。
zlib
が使用しているものと同じ圧縮アルゴリズムです。しかし、zlib を使って gzip 圧縮されたファイルを膨張させるとき、ライブラリは
Z_DATA_ERROR
.
zlib を使って gzip ファイルを解凍するにはどうしたらよいでしょうか。
どのように解決するのですか?
gzip 形式のファイルを zlib で伸長するためには
inflateInit2
と共に
windowBits
というパラメータを
16+MAX_WBITS
のような、このようなものです。
inflateInit2(&stream, 16+MAX_WBITS);
これを行わないと、zlib は不正なストリーム形式であると文句を言います。デフォルトでは、zlib は zlib ヘッダを持つストリームを作成し、 inflate では、あなたがそう指示しない限り、異なる gzip ヘッダを認識しません。このことは、バージョン 1.2.1 以降の
zlib.h
ヘッダファイルのバージョン 1.2.1 から文書化されていますが
zlib マニュアル
. ヘッダーファイルから
windowBits
は、オプションの gzip デコードのために 15 よりも大きくすることができます。追加 に 32 を加えます。windowBits
に 32 を追加すると、自動ヘッダ検出による zlib と gzip のデコードが可能になります。 または 16 を追加して gzip フォーマットのみをデコードします (zlib フォーマットは を返します)。Z_DATA_ERROR
). gzip ストリームがデコードされる場合。strm->adler
は は adler32 ではなく crc32 になります。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン