Алгоритм сжатия строк

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

Как просто сжать строку C ++ с помощью LZMA

Однако я не могу найти заголовок lzma.h, который работает с ним где-либо.

По сути, я ищу такую ​​функцию:

std::string compressString(std::string uncompressedString){
//Compression Code

return compressedString;
}

Выбор алгоритма сжатия не имеет большого значения. Кто-нибудь может помочь мне найти что-то подобное? Заранее спасибо! 🙂

2

Решение

Основываясь на указателях в статье, я уверен, что они используют XZ Utils, так что скачайте этот проект и сделайте созданную библиотеку доступной в вашем проекте.

Тем не менее, два предостережения:

  • выгрузка сжатой строки в консоль не очень полезна, так как эта строка будет содержать все возможные байтовые значения, большинство из которых не отображаются в консоли
  • сжатие коротких строк (фактически любого небольшого количества данных) — это не то, для чего были разработаны большинство компрессоров общего назначения, во многих случаях сжатый результат будет таким же большим или даже большим, чем вход. Тем не менее, у меня нет опыта работы с LZMA для небольших объемов данных, обширный тест с представителем данных для вашего варианта использования скажет вам, работает ли он должным образом.

Один алгоритм, с которым я играл, который дает хорошее сжатие на небольших объемах данных (проверено на блоках данных размером 300-500 байт): кодировка диапазона.

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector