Сжатие файлов с C ++ - PullRequest
       2

Сжатие файлов с C ++

6 голосов
/ 06 апреля 2011

Я хочу создать свою собственную программу сжатия текстовых файлов.Я не очень разбираюсь в программировании на C ++, но я изучил все основы и написание / чтение файла.Я много искал в Google о сжатии и видел много разных методов сжатия файлов, таких как LZW и Huffman.Проблема в том, что у большинства из них нет исходного кода, или у них очень сложный.Я хочу спросить, знаете ли вы какие-нибудь хорошие веб-страницы, где я могу учиться и самостоятельно создавать программу сжатия?

РЕДАКТИРОВАТЬ: я позволю этой теме быть открытой немного дольше, так как я планирую изучить это в следующие несколькодней, и если у меня есть какие-либо вопросы, я задам их здесь.

Ответы [ 4 ]

8 голосов
/ 06 апреля 2011

Вы можете попробовать эту страницу , в которой подробно рассматриваются основы сжатия и первые принципы.

8 голосов
/ 06 апреля 2011

Большинство алгоритмов довольно сложны.Но у всех них есть общее, что они берут данные, которые повторяются, и хранят их только один раз, и имеют систему знания, как их распаковывать (возвращая повторяющиеся сегменты на место)

Вот простой пример, который выможно попробовать реализовать.

У нас есть этот файл данных

XXXXFGGGJJ

DDDDDDDDAA

XXXXFGGGJJ

Здесьу нас есть повторяющиеся символы и две строки, которые повторяются.Поэтому вы можете начать с поиска способа уменьшения размера файла.

Вот простой алгоритм сжатия.

4XF3G2J

8D2A

4XF3G2J

Итак, у нас есть 4 из X, один из F, 3 из G и т. Д.

3 голосов
/ 06 апреля 2011

Сжатие не самая простая задача.Я взял урок в колледже, чтобы узнать об алгоритмах сжатия, таких как LZW и Huffman, и могу вам сказать, что они не так просты.Если C ++ - ваш первый язык, и вы только начинаете заниматься такими вещами, я бы не рекомендовал пытаться написать собственный алгоритм сортировки.Если вы более опытны, то я бы попробовал написать исходный код без предоставления вам кода - это показывает, что вы действительно понимаете алгоритм сжатия.

Вот как меня учили, - профессор объяснил алгоритм оченьобщие термины, а затем либо мы реализовали бы это (на Java, обратите внимание), либо ответили бы на вопросы о том, как алгоритм будет вести себя при определенных обстоятельствах.Если бы мы могли сделать что-то из этого, то мы действительно знали бы алгоритм - без его указания нам вообще какого-либо источника - это хороший навык для развития;)

1 голос
/ 06 апреля 2011

Дерево кодирования Хаффмана не слишком сложно, я бы начал с них. Вот ссылка: Пример: деревья кодирования Хаффмана

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...