2012-06-18 6 views
0
Is there is a way to reduce the length of a string 
using String encoding algorithm. 

К сожалению, «кодирование Хаффмана» не является решением для моего дела. Я ищу алгоритм кодирования, который берет строку и генерирует строку , которая короче исходной строки (ввода).Алгоритм строковой кодировки

+0

Вы можете base64 кодировать данные, полученные кодировкой Хаффмана. Не уверен, что он короче, но он создаст печатную строку. – nhahtdh

+0

Что такое ваша строка ??? Вы имели в виду сжать? – Manjoor

+0

@Manjoor Да мне нужен какой-то компресс –

ответ

2

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

В случае, если вы просто задавались вопросом, как преобразовать результаты обратно в строку, снова появляется множество способов. Base64 прост и работает достаточно хорошо. Однако он имеет 25% накладных расходов по сравнению с чистой двоичной кодированной строкой.

+1

На самом деле, я считаю, [Base64] (http://en.wikipedia.org/wiki/Base64#Padding) имеет накладные расходы ~ 33%. – oldrinb

+0

Извините, вы правы. Накладные расходы составляют 33% от исходной строки и 25% закодированной строки. – Antimony

0

См. "English Text compression test". В статье вы найдете почти все возможные алгоритмы сжатия английского текста. Возможно, некоторые из них могут удовлетворить ваши требования.

2

Надеюсь, это отвечает на ваш предполагаемый вопрос. Существует библиотека, smaz, которая эффективно сжимает короткие английские строки. Возможно, к счастью для вас, на самом деле кодирует строку. Если ваши строки не являются английскими, общий метод, используемый smaz (статический словарь), может использоваться с другими компрессорами.

+0

Благодарим вас за информацию. Эта библиотека может быть подходящей для моего случая. Но реализация выполняется в C. Я ищу реализацию Java и/или C#. –

+0

@KeshanDeSilva Это очень маленькая программа, вы можете легко ее преобразовать вручную. Удачи! – U2EF1