[devel] base2 <-> base62

Alexander Bokovoy ab на altlinux.org
Чт Авг 5 13:07:00 UTC 2010


2010/8/5 Alexey Tourbin <at на altlinux.ru>:
> Ломал голову несколько часов.  Кто знает тому пряник.
>
> Есть слово в алфавите {0,1} - т.е. последовательность нулей и единиц.
> Хочется представить это слово в алфавите {0..9,a..z,A..Z} (base62)
> для экономии битов.  То есть получить более короткое представление
> этой последовательности в виде букв и цифр.  И нужно уметь
> конвертировать назад.
>
> Понятно, что если из последовательности сделать просто число, то задача
> сводится к представлению числа в различных системах счисления.  Но
> последовательность слишком длинная, в машинное число она не поместится,
> а связываться с GPM неохота.
В оригинальной задаче наличие всех первоначальных битов обязательно
или можно обойтись хэшем?
Если нельзя, то какой длины последовательность? Хорошо ли сжимается?
Может быть имеет смысл сжимать (хаффманом или еще чем), а потом
полученный результат паковать в base64 и заменять "неправильные"
символы на "правильные" с однозначным обратным восстановлением при
распаковке с последующим unbase64.

-- 
/ Alexander Bokovoy


Подробная информация о списке рассылки Devel