Ответ 1
Возможно, вы захотите использовать База 36 или База 62.
База 36 была бы наиболее компактной для буквенно-цифровых символов, не учитывающих регистр, но если вы хотите использовать чувствительность к регистру, Base 62 будет примерно на 20% более компактным.
Для Base 36 вы можете легко использовать метод JavaScript Number.toString(radix)
, как показано ниже:
var n = 123456;
n.toString(36); // returns: "2n9c"
Для Base 62 вы можете проверить этот пост форума. В основном вы должны быть в состоянии сделать следующее:
Number.prototype.toBase = function (base) {
var symbols =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
var decimal = this;
var conversion = "";
if (base > symbols.length || base <= 1) {
return false;
}
while (decimal >= 1) {
conversion = symbols[(decimal - (base * Math.floor(decimal / base)))] +
conversion;
decimal = Math.floor(decimal / base);
}
return (base < 11) ? parseInt(conversion) : conversion;
}
var n = 123456;
n.toBase(62); // returns: "w7e"