LINUX.ORG.RU

Разделение .bin файла на секции при сжатии LZW

 , , , ,


0

1

Всех приветствую. Делаю задание для шараги, нужно написать прогу которая способна сжимать и растягивать файл алгоритмом LZW. Сам алгоритм предполагает наличие начального словаря, который по ходу сжатия файла(нахождения в нём новых последовательностей байтов) расширен. То есть для того чтобы в дальнейшем растянуть файл обратно, нужно знать словарь. И вообще понять, подлежит файл растягиванию или же это просто белиберда из битов. Пока такие соображения: первые биты в сжатом файле сделать что-то типа сигнатурных, чтобы можно было сходу определить можно ли растянуть файл. И после сигнатурных битов будут биты сжатого файла, а потом будет магическое число типа как «разделитель» между файлом и словарём. Насколько хорошая идея использовать магическое число как разделитель? Или же лучше будет выделить под сжатый файл первые 4 бита как сигнатурные, где помимо метки сжатия файла будет ещё число под оффсет, как количество битов после которых заканчивается сжатый файл и будут пары ключ-значение из словаря? Или может быть лучше сделать по-другому как-то?

а потом будет магическое число типа как «разделитель»

А если это магическое число будет в самом сжатом файле?

Посмотри как устроены такие форматы, как:

  1. cpio
  2. tar
  3. CBOR

Они простые, а понимание их устройства на бинарном уровне уберут лишние вопросы «как?».

AlexVR ★★★★★
()