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;
};
}