You may want to use Base 36 or Base 62.
Base 36 would be the most compact for case-insensitive alphanumerical characters, but if you want to exploit case-sensitivity, Base 62 would be approximately 20% more compact.
For Base 36, you can easily use JavaScript's Number.toString(radix)
method, as follows:
var n = 123456;
n.toString(36); // returns: "2n9c"
For Base 62, you may want to check this forum post. Basically you should be able to do the following:
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"
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…