Ну, в основном вы должны рассматривать его как число в базе 36. Так, например, строка "012" будет означать 2 + 1 * 36 + 0 * 36 2 . Когда у вас заканчиваются цифры, вы переходите к буквам - поэтому «ABC» будет означать 12 от «C» + 11 от «B» * 36 + 10 от « A ' * 36 2 .
Если вы понимаете, как работает hex, это то же самое, за исключением использования всех символов латинского алфавита.
Он потерпит неудачу для чего-либо, кроме 0-9, A-Z, a-z - и также не удастся для достаточно длинных строк; long
работает только до 2 63 , которые вы достаточно быстро пройдете на базе 36. Например, «Hazelnut12345» не срабатывает. О, и это без учета регистра, так что значение для "foo" такое же, как и для "FOO" - это не соответствует вашему требованию уникальности?
По сути, у вас есть только 2 64 long
значений для игры, поэтому, если имена ваших пакетов не очень ограничены, вы не сможете создать уникальное отображение.