利用进制转换压缩数字
/*进制转换函数,用于压缩数字,比如Date.now()这样的长数字,用62进制表示,就更短*/ 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();
作者:阿良
出处:http://www.cnblogs.com/arliang
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议
进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。