.LZ4 ファイルとは何ですか?
拡張子が .lz4 のファイルは、LZ4 圧縮をサポートするアプリケーション/ユーティリティで作成された圧縮アーカイブ ファイルです。 LZ4 アルゴリズムは、速度と圧縮率の間のトレードオフに重点を置いています。圧縮された LZ4 アーカイブは、LZ4 コマンドライン ユーティリティを使用して作成でき、同じものを使用して解凍できます。
LZ4 ファイル形式
LZ4 圧縮アルゴリズムに基づく LZ4 ファイル形式は、CPU の種類、オペレーティング システム、ファイル システム、および文字セットに依存しません。 LZ4 アルゴリズムを使用したファイル圧縮およびストリーミング圧縮に適しています。 LZ4 形式の最初の実装は、2011 年に Yann Collet によって C 言語で実行され、Github で開発者の参照用に利用できます。 .
LZ4 フレーム形式
LZ4 ファイル形式の一般的な構造は次のとおりです。
MagicNb | F.記述子 | ブロック | (…) | エンドマーク | C.チェックサム |
---|---|---|---|---|---|
4バイト | 3~15バイト | 4 バイト | 0 ~ 4 バイト |
マジックナンバー
4 バイト、リトルエンディアン形式。値: 0x184D2204
フレーム記述子
フレーム記述子は 3 t0 15 バイトで構成され、仕様の最も重要な部分です。 Magic_Number フィールドと Frame_Descriptor フィールドは合わせて LZ4 フレーム ヘッダーと呼ばれ、そのサイズは 7 ~ 19 バイトです。下図のとおりです。
FLG | BD | (コンテンツ サイズ) | (辞書 ID) | HC |
---|---|---|---|---|
1バイト | 1 バイト | 0 - 8 バイト | 0 - 4 バイト | 1 バイト |
データ ブロック
各データ ブロックは、次の順序に従います。
ブロックサイズ | データ | (ブロック チェックサム) |
---|---|---|
4バイト | 0 - 4 バイト |
エンドマーク
ブロックのフローは、最後のデータ ブロックの後に 32 ビット値 0x00000000 が続くと終了します。
コンテンツ チェックサム
Content_Checksum は、正しくデコードされたコンテンツの有効性を検証し、xxHash-32 アルゴリズムの結果を使用して実行されます。すべてのブロックが正しい順序でエラーなしで正常に送信された結果を検証します。