Java中的进制转换,练习

来源:互联网 发布:搜索引擎优化实战培训 编辑:程序博客网 时间:2024/05/22 15:23

代码如下,希望以后可以闭着眼睛打出来~~

package com.hackerang.algo;import java.util.Stack;public class HexBinaryBlaBla {    //十进制进制转换成任意进制    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>();        String numStr = String.valueOf(num);        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;        }        while(!s.isEmpty())            str.append(s.pop());                //讲栈中的数取出,存入str        return str.toString();          }    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)  //若目标进制不是10进制,先将num转化为十进制            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);   //将num转化为目标进制    }}
0 0
原创粉丝点击