Kas yra LZ4 failas?
Failas su plėtiniu .lz4 yra suglaudintas archyvo failas, sukurtas naudojant programas/paslaugas, kurios palaiko LZ4 glaudinimą. LZ4 algoritmas sutelkia dėmesį į greičio ir suspaudimo laipsnio kompromisą. Suspaustus LZ4 archyvus galima sukurti naudojant LZ4 komandų eilutės įrankį ir išskleisti naudojant tą patį.
LZ4 failo formatas
LZ4 failo formatas, pagrįstas LZ4 glaudinimo algoritmu, nepriklauso nuo procesoriaus tipo, operacinės sistemos, failų sistemos ir simbolių rinkinio. Jis tinka failų glaudinimui ir srautinio perdavimo glaudinimui naudojant LZ4 algoritmą. Pradinį LZ4 formato diegimą C kalba atliko Yann Collet 2011 m., o kūrėjas gali susipažinti su juo Github.
LZ4 rėmelio formatas
Bendra LZ4 failo formato struktūra yra tokia, kaip parodyta toliau.
MagicNb | F. Deskriptorius | Blokas | (…) | Pabaigos žymėjimas | C. Kontrolinė suma |
---|---|---|---|---|---|
4 baitai | 3-15 baitų | 4 baitai | 0-4 baitai |
Magiškas skaičius
4 baitai, Little endian formatas. Vertė: 0x184D2204
Rėmelio aprašas
Kadro aprašas susideda iš 3 t0 15 baitų ir yra svarbiausia specifikacijų dalis. Kartu laukai Magic_Number ir Frame_Descriptor vadinami LZ4 rėmelio antrašte, o jo dydis svyruoja nuo 7 iki 19 baitų. Tai yra taip, kaip parodyta žemiau.
FLG | BD | (Turinio dydis) | (Žodyno ID) | HC |
---|---|---|---|---|
1 baitas | 1 baitas | 0–8 baitai | 0–4 baitai | 1 baitas |
Duomenų blokai
Kiekvienas duomenų blokas seka tokia tvarka.
Bloko dydis | duomenys | (Blokuoti kontrolinę sumą) |
---|---|---|
4 baitai | 0–4 baitai |
Pabaiga
Blokų srautas baigiasi, kai po paskutinio duomenų bloko yra 32 bitų reikšmė 0x00000000.
Turinio kontrolinė suma
Content_Checksum patikrina teisingai iššifruoto turinio pagrįstumą ir atliekama naudojant xxHash-32 algoritmo rezultatą. Jis patvirtina sėkmingo visų blokų perdavimo rezultatus teisinga tvarka ir be klaidų.