JavaScript实现BASE62编码与解码

来源:互联网 发布:linux开机不启动防火墙 编辑:程序博客网 时间:2024/03/29 14:05
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;  };}

原创粉丝点击