zoukankan      html  css  js  c++  java
  • 利用进制转换压缩数字

    /*进制转换函数,用于压缩数字,比如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 中国大陆许可协议
    进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    上传文件到七牛云
    工具类
    SpringBoot 整合 JWT Token
    JWT
    SpringBoot使用RedisTemplate整合Redis
    poj1850 Code
    洛谷P1313 计算系数
    洛谷P1602 Sramoc问题
    —Libre#2009. 「SCOI2015」小凸玩密室
    2014-9-27 NOIP模拟赛
  • 原文地址:https://www.cnblogs.com/arliang/p/integer_zipper.html
Copyright © 2011-2022 走看看