给个16进制转化成10进制的算法?快,急用
给个16进制转化成10进制的算法
------解决方案--------------------public class Change {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s=new String( "a ");
System.out.println(Long.parseLong(s,16));
}
}
------解决方案--------------------仿照 Integer.parseInt() 方法做了一个 2~36 进制转换的代码,楼主可以参考一下:
public class Test {
public static void main(String[] args) {
try {
// 采用自己实现的方法
System.out.println(toIntDecimal( "5a44e3 ", 16));
}catch(Exception e){
System.out.println( "ERROR: " + e.getMessage());
}
// Java 中内置的方法
System.out.println(Integer.parseInt( "5a44e3 ", 16));
}
public static int toIntDecimal(String s, int radix) throws Exception {
String seq = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
s = s.trim();
if(s.length() > (int)((Math.log(Integer.MAX_VALUE)+1.0) / Math.log(radix))){
throw new Exception( s + " 数值溢出,无法转换 ");
}
if( (radix > seq.length()) || (radix < 2)){
throw new Exception( "无法转换进制 " + radix);
}
int num = 0;
for (int i = 0; i < s.length(); i++) {
int idx = seq.indexOf(Character.toUpperCase(s.charAt(i)));
if( (idx > radix - 1) || (idx < 0) ) {
throw new Exception( s + " 中出现非法字符 " + s.charAt(i));
}
num = idx + (num * radix);
}
return num;
}
}