3

プロジェクトで MiniLZO を使用して、非常に単純な圧縮タスクを実行しています。あるプログラムで圧縮し、別のプログラムで解凍しています。解凍バッファに割り当てるスペースを知りたいです。圧縮解除されたデータがどれだけのスペースを必要とするかを宣言する整数で出力ファイルに注釈を付ける手間を省くことができれば、スペースを過剰に割り当てても問題ありません。どのくらいのスペースが必要になるかをどのように把握できますか?

少し検討した結果、この質問は次のように要約できると思います: lzo1x 圧縮の最大圧縮率は?

4

2 に答える 2

4

コンプレッサとデコンプレッサの両方を制御するため、入力を固定サイズのブロックに圧縮することをお勧めします。私のアプリケーションでは、各ブロックで最大 64KB まで圧縮してから、圧縮されたブロックのサイズと圧縮されたデータ自体を出力するため、圧縮されたストリームは実際には一連の圧縮されたブロックのように見えます。

length_of_block_1
block_1
length_of_block_2
block_2
...

圧縮解除プログラムは、圧縮された各ブロックを読み取り、64KB のブロックを圧縮して生成されたブロックであることを知っているため、64KB のバッファーに解凍します。

それが役立つことを願って、

エリック・メルスキー

于 2009-04-21T19:24:04.107 に答える
3

解凍されたデータの最大サイズは、最初に圧縮したデータの最大サイズと明らかに同じです。

入力サイズに上限がある場合は、それを使用できると思いますが、これを行う通常の方法は、非圧縮サイズを指定するヘッダーを圧縮バッファーに追加することです。

于 2009-04-21T18:58:50.330 に答える