Вы упомянули 62, что говорит о том, что вы ограничиваете свой алфавит до A-Z (заглавные и строчные) и цифры 0-9. Почему бы не добавить еще пару символов, совместимых с XML, в этот список, например +
, .
, ~
или !
, чтобы довести это число до 64? Вы сможете выполнять сдвиг битов, а не деление, что должно сделать алгоритм таким же быстрым, как и Base32, и уменьшить размер строк.
Редактировать: Поскольку существует ограничение на то, что эти символы также доступны для других , пока еще не определенных языков, вам может понадобиться экранировать некоторые из ваших символов для представления 64 вариантов. Если вы используете, например, _ в качестве escape-символа, вы могли бы иметь _1 и _2, представляющие опции 63 и 64. Статистика, упомянутая в исходном вопросе, предполагает, что UUIDS 128-битные, поэтому наш Base64 даст нам 22 символа, если нет экранирования и, если экранировано до 4 предметов, остается в пределах ваших 26 символов.