2006/02/07 | 进制转换——2进制~62进制与10进制的转换
类别(Flash习作) | 评论(1) | 阅读(712) | 发表于 20:31


//var str="AZ";
//for(var i=0;i //charCode:0-9:(48-57);A-Z:(65-90);a-z:(97-122);
//将10进制数N转换成d进制数(以0-9,A-Z,a-z字符表示),d为2-62
function jh_10toD(N, d) {
  N = Math.floor(Number(N));
  d = Math.floor(Number(d));
  d = d<2 ? 2 : d>62 ? 62 : d;
  var s, e = "";
  while (N>0) {
    s = N%d;
    if (s>35) {
      //36至62的数用a-z字符表示(s-36+97)
      s = String.fromCharCode(s+61);
    } else if (s>9) {
      //10至35的数用A-Z字符表示(s-10+65)
      s = String.fromCharCode(s+55);
    }
    e = s+e;
    N = Math.floor(N/d);
  }
  e = e != "" ? e : "0";
  return e;
}
//将d进制数转换为10进制
function jh_Dto10(str, d) {
  d = Math.floor(Number(d));
  d = d<2 ? 2 : d>62 ? 62 : d;
  var code = 0, num = 0;
  for (var i = 0; i     code = str.charCodeAt(i);
    if (code>96) {
      code -= 61;
    } else if (code>64) {
      code -= 55;
    } else {
      code -= 48;
    }
    num += code*Math.pow(d, str.length-1-i);
  }
  return num;
}
//测试:
in_D = 62;
num1 = "15000";
num2 = jh_10toD(num1, in_D);
bt1.onRelease = function() {
  num2 = jh_10toD(num1, in_D);
};
bt2.onRelease = function() {
  num1 = jh_Dto10(num2, in_D);
};
0

评论Comments