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.youkuaiyun.com/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;
};
}
本文介绍了一种Base62编码与解码的JavaScript实现方法,并提供了完整的代码示例。该方法适用于数字到字符串的转换场景,需要注意的是,处理的数据不应超出系统int的最大限制。
1237

被折叠的 条评论
为什么被折叠?



