利用进制转换压缩数字函数分享

Javascript教程 2025-08-16

复制代码代码如下:

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