Сообщение от with-love-from-siberia
|
Понимаю, что Вы уже удовлетворены предыдущими ответами. Тем не менее добавлю еще свои пять копеек. 36-ричной системы действительно достаточно.
Отказавшись от основания 36 в пользу более высокого основания (62 или 64) Вы не сделаете лучше. Ощутимой экономии Вы не получите, но добавите необходимость в дополнительной поддержке четырех нестандартных функций (по две в php и js - конвертация числа в строку и обратно).
Оценить разрядности числа в той или иной системе счисления можно по такой формуле
Math.ceil(Math.log(n) / Math.log(base))
. Здесь, n - число, base - основание системы счисления.
Вот грубые оценки. Для представления числа 1e6 необходимо по 4 позиции во всех системах по основаниям 36, 62 и 64. И только для 1e9 в системе по основанию 64 требуется 5 позиций, в то время как в системах по основанию 36 и 62 - по прежнему 6. Более точные оценки Вы можете проделать сами. У Вас действительно так много идентификаторов - больше 1 миллиона, что встала необходимость в незначительном укорочении идентификатора такой большой ценой?
Вот минимальный алгоритм конвертации в любую систему счисления по основанию не выше 64 без проверок корректности входных данных.
|
Вот теперь я понял тебя, большое спасибо за развернутый ответ, отличную рекомендацию.
напомню, что я порой часто заказываю скрипты у активных пользователей форума,
могу ли я обращаться к вам,
rgl и
with-love-from-siberia?