Задание № 3083

Студент

Грейскоп Данил

Задача

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

Состояние

Завершено

Баллов

5

Назначено

20.02.2021, 10:25

Завершено

27.02.2021, 08:09

Реализовать компрессор и декомпрессор произвольных файлов (и монохромных картинок тоже) на основе алгоритма 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.

Действия