Чрезвычайно компактный UUID (с использованием всех буквенно-цифровых символов)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Чрезвычайно компактный UUID (с использованием всех буквенно-цифровых символов)

Сообщение Anonymous »

Мне нужен чрезвычайно компактный UUID, чем короче, тем лучше.
С этой целью я написал:

Код: Выделить всё

    public String getBase36UIID() {
// More compact version of UUID
String strUUID = UUID.randomUUID().toString().replace("-", "");
return new BigInteger(strUUID, 16).toString(36);
}
Выполняя этот код, я получаю, например:

Код: Выделить всё

5luppaye6086d5wp4fqyz57xb
Это хорошо, но не самое лучшее. В системе счисления 36 используются все цифры и строчные буквы, но не используются заглавные буквы.
Если бы можно было использовать прописные буквы как отдельные цифры от строчных букв, можно было бы теоретически предположить числовая база 62, состоящая из этих цифр:

Код: Выделить всё

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Я мог бы теоретизировать числовые основы, используя также символы с диакритическими знаками, такие как «è» или «é», или специальные символы, такие как «$» или «!», что еще больше увеличивает количество доступных цифр. .
Однако использование этих акцентированных или специальных символов может вызвать у меня проблемы, поэтому на данный момент я предпочитаю не рассматривать их.
После всех этих предпосылок, как я могу преобразовать BigInteger, представляющий мой UUID, в базу 62, описанную выше, чтобы сделать его еще более компактным? Спасибо
Я уже убедился, что код, подобный следующему, непригоден для использования, поскольку каждое основание больше 36 рассматривается как основание 10:

Код: Выделить всё

return new BigInteger(strUUID, 16).toString(62);
Ведь в математике не существует системы счисления по основанию 62, как я ее себе представлял, но предполагаю, что в Java ее можно создать.

Подробнее здесь: https://stackoverflow.com/questions/634 ... characters
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»