Ломал голову несколько часов. Кто знает тому пряник. Есть слово в алфавите {0,1} - т.е. последовательность нулей и единиц. Хочется представить это слово в алфавите {0..9,a..z,A..Z} (base62) для экономии битов. То есть получить более короткое представление этой последовательности в виде букв и цифр. И нужно уметь конвертировать назад. Понятно, что если из последовательности сделать просто число, то задача сводится к представлению числа в различных системах счисления. Но последовательность слишком длинная, в машинное число она не поместится, а связываться с GPM неохота. В связи с чем вопрос, нет ли какого-нибудь более простого способа. Мне казалось как-то с остатками можно сделать. Но раскодировать остатки пока не получилось.-) // Далее последовательность нулей и единиц хранится в { bitc, bitv[] }. // base62 void put_digit(int c) { if (c < 10) putchar(c + '0'); else if (c < 36) putchar(c - 10 + 'a'); else if (c < 62) putchar(c - 36 + 'A'); } v = 0; for (i = 0; i < bitc; i++) { v = (v << 1) | bitv[i]; while (v >= 62) { int q = v / 62; int r = v % 62; put_digit(r); v = q; } } if (v) put_digit(v); putchar('\n');