С этой целью я написал:
Код: Выделить всё
public String getBase36UIID() {
// More compact version of UUID
String strUUID = UUID.randomUUID().toString().replace("-", "");
return new BigInteger(strUUID, 16).toString(36);
}
Код: Выделить всё
5luppaye6086d5wp4fqyz57xb
Если бы можно было использовать прописные буквы как отдельные цифры от строчных букв, можно было бы теоретически предположить числовая база 62, состоящая из этих цифр:
Код: Выделить всё
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Однако использование этих акцентированных или специальных символов может вызвать у меня проблемы, поэтому на данный момент я предпочитаю не рассматривать их.
После всех этих предпосылок, как я могу преобразовать BigInteger, представляющий мой UUID, в базу 62, описанную выше, чтобы сделать его еще более компактным? Спасибо
Я уже убедился, что код, подобный следующему, непригоден для использования, поскольку каждое основание больше 36 рассматривается как основание 10:
Код: Выделить всё
return new BigInteger(strUUID, 16).toString(62);
Подробнее здесь: https://stackoverflow.com/questions/634 ... characters