Skip to content

Irval1337/FileArchiver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileArchiver

Реализация двух известных алгоритмов для сжатия файлов - LZW и алгоритма Хаффмана. Данные программы представляют из себя консольные интерфейсы с ограниченным количеством команд, достаточных для архивации/деархивации любых файлов с сохранением первоначального расширения. Также обе программы поддерживают запуск через консоль с соответствующими аргументами.

Сжатие с помощью Хаффмана

Пользователю доступно 4 команды:

  • zip path - архивация файла по указанному пути. После генерации байт-кода будет открыт SaveFileDialog для сохранения сжатого файла в формате .hruh.
  • gen path - генерация таблицы кодирования. Также имеется возможность записи этой таблицы в файл.
  • unzip path - восстановление исходного файла из указанного. После генерации байт-кода будет открыт SaveFileDialog для сохранения полученного файла с исходным расширением.
  • regen path - восстановление таблицы Хаффмана из сжатого файла.

Сжатие с помощью LZW

Словарь в алгоритме реализован с помощью структуры бора. Это позволило немного уменьшить затраты по памяти на хранение всех наборов байт, а также ускорить поиск набора в этом словаре.
Алгоритм поддерживает 2 возможных варианта записи номеров наборов байт - с помощью кодов фиксированной длины со сбросом на 17 бите и с помощью дельта-кода Элиаса. Выбранный вариант кодирования также хранится в качестве первого бита сжатого файла.

Пользователю доступно 2 команды:

  • zip 0/1 path - архивация файла по указанному пути. 0 - запись с помощью кодов фиксированной длины, 1 - использование дельта-кода Элиаса. После генерации байт-кода будет открыт SaveFileDialog для сохранения сжатого файла в формате .kalov.
  • unzip path - восстановление исходного файла из указанного. После генерации байт-кода будет открыт SaveFileDialog для сохранения полученного файла с исходным расширением.

About

C++ implementation of Huffman and LZW algorithms.

Topics

Resources

License

Stars

Watchers

Forks