فایل LZ4 چیست؟
یک فایل با پسوند lz4. یک فایل بایگانی فشرده است که با برنامهها/دستگاههایی که از فشردهسازی [LZ4](https://en.wikipedia.org/wiki/LZ4_(compression_algorithm) پشتیبانی میکنند ایجاد شده است. الگوریتم LZ4 بر مبادله بین سرعت و نسبت تراکم تمرکز دارد. بایگانی های فشرده LZ4 را می توان با استفاده از ابزار خط فرمان LZ4 ایجاد کرد و با استفاده از آن می توان از حالت فشرده خارج کرد.
فرمت فایل LZ4
فرمت فایل LZ4، بر اساس الگوریتم فشرده سازی LZ4، مستقل از نوع CPU، سیستم عامل، سیستم فایل و مجموعه کاراکترها است. برای فشرده سازی فایل و فشرده سازی جریان با استفاده از الگوریتم LZ4 مناسب است. پیاده سازی اولیه قالب LZ4 به زبان C توسط Yann Collet در سال 2011 انجام شد و برای مرجع توسعه دهندگان در Github در دسترس است.
قالب قاب LZ4
ساختار کلی فرمت فایل LZ4 مطابق شکل زیر است.
MagicNb | F. توصیفگر | بلوک | (…) | EndMark | C. چک جمع |
---|---|---|---|---|---|
4 بایت | 3-15 بایت | 4 بایت | 0-4 بایت |
شماره جادویی
4 بایت، فرمت اندین کوچک. مقدار: 0x184D2204
توصیفگر قاب
توصیفگر فریم از 3 t0 15 بایت تشکیل شده است و مهمترین بخش مشخصات است. فیلدهای Magic_Number و Frame_Descriptor با هم به عنوان LZ4 Frame Header نامیده می شوند و اندازه آن بین 7 تا 19 بایت متغیر است. مطابق شکل زیر است.
FLG | BD | (اندازه محتوا) | (شناسه فرهنگ لغت) | HC |
---|---|---|---|---|
1 بایت | 1 بایت | 0 - 8 بایت | 0 - 4 بایت | 1 بایت |
بلوک های داده
هر بلوک داده از ترتیب زیر پیروی می کند.
اندازه بلوک | داده | (Block Checksum) |
---|---|---|
4 بایت | 0 - 4 بایت |
علامت پایان
جریان بلوک ها زمانی پایان می یابد که آخرین بلوک داده با مقدار 0x00000000 32 بیتی دنبال شود.
جمع بازرسی محتوا
Content_Checksum اعتبار محتوایی را که به درستی رمزگشایی شده است تأیید می کند و با استفاده از نتیجه الگوریتم xxHash-32 انجام می شود. نتایج ارسال موفقیت آمیز تمام بلوک ها را به ترتیب صحیح و بدون هیچ خطایی تأیید می کند.
منابع
[الگوریتم فشرده سازی LZ4 - ویکی پدیا](https://en.wikipedia.org/wiki/LZ4_(الگوریتم_ فشرده سازی))