.LZ4 вариант №
Файл с расширением .lz4 представляет собой сжатый архивный файл, созданный с помощью приложений/утилит, поддерживающих сжатие LZ4. Алгоритм LZ4 фокусируется на компромиссе между скоростью и степенью сжатия. Сжатые архивы LZ4 можно создавать с помощью утилиты командной строки LZ4 и распаковывать с ее помощью.
Формат файла LZ4
Формат файла LZ4, основанный на алгоритме сжатия LZ4, не зависит от типа процессора, операционной системы, файловой системы и набора символов. Он подходит для сжатия файлов и потокового сжатия с использованием алгоритма LZ4. Первоначальная реализация формата LZ4 была выполнена на языке C Яном Колле в 2011 году и доступна для справки разработчика на Github. .
Формат кадра LZ4
Общая структура формата файла LZ4 показана ниже.
МагияNb | Ф. Дескриптор | Блок | (…) | Конечная метка | C. Контрольная сумма |
---|---|---|---|---|---|
4 байта | 3-15 байт | 4 байта | 0-4 байта |
Магическое число
4 байта, формат с прямым порядком байтов. Значение: 0x184D2204
Дескриптор кадра
Дескриптор кадра состоит из 3–15 байтов и является наиболее важной частью спецификации. Вместе поля Magic_Number и Frame_Descriptor называются заголовком кадра LZ4, и его размер варьируется от 7 до 19 байтов. Как показано ниже.
ФЛГ | БД | (Размер содержимого) | (ID словаря) | ХК |
---|---|---|---|---|
1 байт | 1 байт | 0 - 8 байт | 0 - 4 байта | 1 байт |
Блоки данных
Каждый блок данных следует следующему порядку.
Размер блока | данные | (контрольная сумма блока) |
---|---|---|
4 байта | 0 - 4 байта |
EndMark
Поток блоков заканчивается, когда за последним блоком данных следует 32-битное значение 0x00000000.
Контрольная сумма содержимого
Content_Checksum проверяет правильность декодируемого контента и выполняется с использованием результата алгоритма xxHash-32. Он проверяет результаты успешной передачи всех блоков в правильном порядке и без ошибок.