十进制转任意进制数(32位以下--主要是应付面试使用)

今天一个哥们去面试,结果面试官考了一个十进制转化为十五进制的问题,十五进制啊,面试官真是脑洞大开。

这里我写了一个demo 是仿照JDK写的,经得起考验。

public class Ten2Sixteen {

	public static void main(String[] args) {
		int num = 1000;
		System.out.println("JDK16进制结果>>>>>>>>>>>>>>" + Integer.toHexString(num));
		
//		System.out.println(1000 & 15);
//		System.out.println(62 & 15);
//		System.out.println(3 & 15);
//		System.out.println(1000%16);
		/**
		 * 1 << 2 等于  1 * 2的平方(4)
		 * 1 >>> 2 等于 1 / 2的平方(4)
		 * 1000%16(1000对16取余) 等于 1000 & (16-1) [因为指针是从0开始的  所有15对应第16个位置]
		 */
		System.out.println("算法结果" + new Ten2Sixteen().getJz(num,16));
		
	}
	/**
	 * 用于十进制转换为其他进制  
	 * @param i 需转化的十进制数
	 * @param jz 转换成几进制的
	 * @return
	 */
	public String getJz(int i, int jz){
		char[] buf = new char[32];
        int charPos = 32;
        int mask = jz - 1;
        
        do {
            buf[--charPos] = digits[i & mask];
            i = i/jz;
        } while (i != 0);
        return new String(buf, charPos, (32 - charPos));
	}
	
	final static char[] digits = {
        '0' , '1' , '2' , '3' , '4' , '5' ,
        '6' , '7' , '8' , '9' , 'a' , 'b' ,
        'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
        'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
        'o' , 'p' , 'q' , 'r' , 's' , 't' ,
        'u' , 'v' , 'w' , 'x' , 'y' , 'z'
    };
	
}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/Li_Cheng_Liang/article/details/75660588
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞