Кодировать строку в другую базу с большим количеством символов? - PullRequest
0 голосов
/ 10 октября 2011

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

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

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

Самый известный алгоритм этого семейства - кодирование Хаффмана: http://en.wikipedia.org/wiki/Huffman_coding

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

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

0 голосов
/ 10 октября 2011

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

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

...