Задание № 2376

Студент

Мещанинов Григорий

Задача

RLE-сжатие файла

Состояние

Завершено

Баллов

5

Назначено

19.03.2020, 03:21

Завершено

29.04.2020, 11:11

Реализовать компрессор и декомпрессор произвольных файлов (и монохромных картинок тоже) на основе алгоритма RLE.

Режим работы и файлы задаются в командной строке.

  • python3 rle.py c infile outfile — сжатие infile, результат записывается в outfile.
  • python3 rle.py d infile outfile — распаковка infile, результат записывается в outfile.

Суть алгоритма

  1. Выбирается специальный байт (редко встречающийся в файле), который будет использоваться как префикс.
  2. Повторяющиеся цепочки одинаковых байтов будут заменяться на последовательность PF CC BB, где PF — байт-префикс, CC — количество байт, BB — само значение байта. Например, если выбран префикс FF, то последовательность 10 10 10 10 10 10 будет заменена на FF 06 10. Если в файле встретится байт FF, то он будет заменен на FF 01 FF.

Действия