代码如下,希望以后可以闭着眼睛打出来~~
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转化为目标进制
}
}