0

gzipやその他の圧縮ルーチンは、バイトレベルの重複排除を使用して動作することを認識しています。後半のgzipのように書くための標準的なルーチンがあるかどうか疑問に思っていました。

具体的には、改訂履歴について。現在のテキストはプレーンで、以前のリビジョンは圧縮されたBLOBになります。圧縮結果に現在のテキストを実際に含めずに、現在のプレーンを圧縮のスターターテキストとして設定する方法はありますか?したがって、圧縮されたテキストとスターターテキストの両方が一緒に使用されて解凍されます。

私はJava、Perl、Node.JSに興味があり、前述の言語の1つを使用してコンパイル済みファイルを呼び出す方法があるため、C /C++だと思います。この場合、UNIXでCファイルを作成します。

そのようなルーチンは存在しますか、1つの重要な/利用可能な複数の言語がありますか?

4

2 に答える 2

1

Zipを使用すると、2つの別々のファイルを含めることができ、そのうちの1つを圧縮することはできません

Javaにはzipファイルを扱う機能があることを知っています

于 2012-05-17T19:43:59.730 に答える
0

圧縮結果に現在のテキストを実際に含めずに、現在のプレーンを圧縮のスターター テキストとして設定する方法はありますか。

2 つの方法があります。zlibを使用して、最大 32KのdeflateSetDictionary()履歴をコンプレッサーに提供できます。これは、コンプレッサーに供給されるものを圧縮するために使用されます。32K は圧縮データに含まれていないため、解凍を正常に行うためには、何らかの方法で 32K を利用できる必要があります。

おそらくより効果的なのは、特に 32K を超えるテキストの場合、Unix を使用diffしてリビジョンと現在のテキストの違いを生成し、diff. diff複数のリビジョンに対して連続して を実行し、そのすべてを圧縮できます。

于 2012-05-17T20:33:17.323 に答える