var Base62 = {
arr : new Array('v', 'P', 'h', '7', 'z', 'Z', 'w', 'A', '2', 'L', 'y', 'U', '4', 'b', 'G', 'q', '5', 't', 'c', 'V', 'f', 'I', 'M', 'x', 'J', 'i', '6', 'X', 'a', 'S', 'o', 'K', '9', 'C', 'N', 'p', '0', 'O', 'W', 'l', 'j', 'Y', 'T', 'H', 'Q', '8', 'R', 'E', 'n', 'm', 'u', '3', '1', 'B', 'r', 'd', 'g', 'e', 'D', 'k', 'F', 's'),
log10 : function(x)
{
return Math.log(x)/Math.log(10)
}
,
encode : function(str)
{
var out = '';
for(var t = Math.floor(this.log10(str)/this.log10(62)); t>=0; t--)
{
var a = Math.floor(str / Math.pow(62, t));
out += this.arr[a];
str = str - (a * Math.pow(62, t));
}
return out;
},
decode : function(str)
{
var out = 0;
var len = str.length - 1;
for(var t = 0; t <= len; t++)
{
out = out + this.arr.indexOf(str.substr(t,1)) * Math.pow(62, len - t);
}
return out;
}
}
document.write(Base62.encode(10010));
使用时不要超过系统限制最大int,否则会出错。
对应的PHP版Base62编码与解码:http://blog.csdn.net/my_yang/article/details/7175059
注意:如果不确定浏览器支持js数组使用indexOf,请加上如下代码
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}