2进制~62进制与10进制的转换 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    转换

    效果如下:

   

    //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);

    };

最新文章