2011-10-10 2 views
0

Я знаю, что могу encode numbers to a base like 65 уменьшить размер символьного дисплея (даже если число меньше в двоичном формате).Кодировать строку на другую базу с большим количеством символов?

Однако есть ли способ кодирования текста UTF-8 на другую базу с большим количеством символов, чем наш стандартный буквенный алфавит на английском языке? Другими словами, вместо того, чтобы требовать 4 «символов» для слова «четыре» - я могу создать представление или хеш, используя только, возможно 2 (т. Е. «6 $»)?

+0

Вы спрашиваете, является ли произвольным четырехсимвольная строка UTF8 может быть без потерь представлена ​​в двух байтах? – NPE

+0

На самом деле @aix, я спрашиваю, могу ли я сжимать произвольную строку из 2-30 символов (слово), поэтому она занимает меньше места, чем требуется для стандартного 26-символьного алфавита. Подобно zipping или hashing может создать представитель значения. – Xeoncross

ответ

0

Я считаю, что точка Base64 - это то, что вы можете легко преобразовать любые двоичные данные в «удобочитаемые» буквы и цифры. Это позволяет легко транслировать произвольные данные в группы новостей или передавать их по текстовым протоколам.

Если вы хотите более «сжать» эти данные, вам нужно выяснить, сколько символов вы хотите разрешить. Всего так много комбинаций из 8 бит. Наиболее эффективным было бы использовать их все, и в этом случае почему просто не использовать gzip?

+0

Я был бы рад использовать gzip, если бы был какой-то способ представлять значения в понятном для человека виде (без распаковки каждого значения gzip'ed), а также сравнить значения gzip с другими. Вы можете увидеть пример преобразования чего-то вроде числа 4,023 в «~ h» в коде I, который указан выше. – Xeoncross

0

Ваш вопрос, кажется, связано с заказ-0 энтропийного кодирования: http://en.wikipedia.org/wiki/Entropy_encoding

Самый известный алгоритм это семейство Хаффмана кодирования: не только говорит Вам, что используются http://en.wikipedia.org/wiki/Huffman_coding

Хаффмана только 64 символов и поэтому требуется только 6 бит на каждый символ: это также будет иметь значение между частыми символами, такими как (пробел) и редкие, например (;). Затем он создаст код, в котором частые символы используют меньше бит, чем более редкие, что приводит к лучшему сжатию (как правило, 4.5 бит на символ в текстах на английском языке).

Кодирование Huffman - это метод всестороннего сжатия, используемый как часть многих алгоритмов сжатия, включая zip. Вы можете найти демонстрационную программу, которая применяется только один проходом Хаффман сжатия здесь (Huff0), это поможет вам определить, сколько можно получить, используя эту технику для выборки входов: http://fastcompression.blogspot.com/p/huff0-range0-entropy-coders.html

Смежные вопросы