Java中int的各进制之间的转换

一个人想着一个人 提交于 2019-12-07 02:52:07

一、二、八、十、十六进制之间的转换

int n1 = 14;
//十进制转成十六进制:
Integer.toHexString(n1);
//十进制转成八进制
Integer.toOctalString(n1);
//十进制转成二进制
Integer.toBinaryString(12);

//十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
//十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));

//八进制转成十进制
Integer.valueOf("576",8).toString();
//八进制转成二进制
Integer.toBinaryString(Integer.valueOf("23",8));
//八进制转成十六进制
Integer.toHexString(Integer.valueOf("23",8));


//二进制转十进制
Integer.valueOf("0101",2).toString();
//二进制转八进制
Integer.toOctalString(Integer.parseInt("0101", 2));
//二进制转十六进制
Integer.toHexString(Integer.parseInt("0101", 2));

 

可以看到其他进制之间相互转换,是先转为10进制,然后再转。

二、十进制转任意进制(2-16);


public static String baseString(int num,int base){  
        if(base > 16){  
            throw new RuntimeException("进制数超出范围,base<=16");  
        }  
        StringBuffer str = new StringBuffer("");  
        String digths = "0123456789ABCDEF";  
        Stack<Character> s = new Stack<Character>();
boolean isMinus = false;//判断输入的数是不是负数
        if(numStr.charAt(0)=='-'){
          num = Integer.valueOf(numStr.substring(1));
          isMinus = true;
        }
while(num != 0){  
            s.push(digths.charAt(num%base));  
            num/=base;  
        }  
       if(isMinus)
str.append("-");
while(!s.isEmpty()){  
            str.append(s.pop());  
        }  
        return str.toString();  
    }



三、16内任意进制间转换
public static String baseNum(String num,int srcBase,int destBase){  
        if(srcBase == destBase){  
            return num;  
        }  
        String digths = "0123456789ABCDEF";  
        char[] chars = num.toCharArray();  
        int len = chars.length;  
        if(destBase != 10){//目标进制不是十进制 先转化为十进制  
            num = baseNum(num,srcBase,10);  
        }else{  
            int n = 0;  
            for(int i = len - 1; i >=0; i--){  
                n+=digths.indexOf(chars[i])*Math.pow(srcBase, len - i - 1);  
            }  
            return n + "";  
        }  
        return baseString(Integer.valueOf(num),destBase);  
    }



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!