Welcome 微信登录

首页 / 脚本样式 / JavaScript / 利用进制转换压缩数字函数分享

复制代码 代码如下:
function zipNum(num, radix){
    if(!zipNum.zip){
        zipNum.zip = function(inputNum){
            if(inputNum > 35){//用大写字母表示36-61
                return String.fromCharCode("A".charCodeAt(0) + inputNum % 36);
            } else if(inputNum > 9){//用小写字母表示10-35
                return String.fromCharCode("a".charCodeAt(0) + inputNum % 10);
            } else {
                return inputNum;
            }
        }
    }
    var quotient = num, remainder, result;
    if(radix > 36 && radix < 63){
        result = [];
        do {
            remainder = quotient % radix;
            quotient = parseInt(quotient / radix);
            result.push(zipNum.zip(remainder));
        }while(quotient > radix);
        remainder = quotient % radix;
        if(remainder !== 0){
            result.push(zipNum.zip(remainder));
        }
        result = result.reverse().join("");
    } else if(radix > 1 && radix < 36){
        result = num.toString(radix);
    } else {
        result = num;
        window.console && console.warn("radix argument must be between 2 and 62")
    }
    return result;
}

function testSortNum(){
    assertEquals(zipNum(61, 62), "Z");
    assertEquals(zipNum(62 * 2 - 1, 62), "1Z");
    assertEquals(zipNum(62 * 3 - 1, 62), "2Z");
    assertEquals(zipNum(1361182624991, 62), "dXN5fJB");
}
testSortNum();