23

zlibのdeflate()と関数の違いは何ですか?compress()

私はオンラインの例を見てきましたが、deflate を使用したものもあれば、compress を使用したものもありました。

どの状況でどちらを使用するかをどのように決定すればよいですか?

4

1 に答える 1

83

compress()は、1 回の呼び出しでデータを圧縮するために使用され、常にzlib形式に圧縮されます。これは、2 バイトのヘッダーと 4 バイトのチェック値のトレーラーを含むデータの収縮です。 compress()単独で使用されます。

deflate()データを一度にチャンク圧縮したり、gzip -wrapped やrawなどの他の形式に圧縮したり、メモリ レベルや圧縮戦略などの他のオプションを使用したりするために使用されます。

compress()すべてのデータを一度に利用でき、結果を保持するのに十分なメモリがあり、デフォルトの圧縮形式、メモリ使用量、および戦略が必要な場合に使用します。それ以外の場合は、 を使用しますdeflate()

deflate() は単独では使用されません。deflateInit()またはで使用される構造体deflateInit2()を初期化する必要があります。次に、データを取得して圧縮し、結果を利用できるようにするために、1 回以上呼び出します。最後に、構造体で使用されているメモリ リソースを解放するために呼び出されます。詳細については、 zlib.hおよびhttp://zlib.net/zlib_how.htmlのドキュメントを参照してください。z_streamdeflate()deflate()deflateEnd()

于 2012-04-16T03:36:59.337 に答える