一个16进制字符串,可能是带负号的,也可能是非法的(g1234),把它转换为10进制整数输出。
public class HexToDecmal {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println(toDecmal("-1g"));
}
public static int toDecmal(String in) throws Exception{
int len = in.length();
char firstChar =in.charAt(0);
boolean flag =true;
int sum=0;
int end=0;
if(firstChar=='-')
{
flag=false; //标志是否为负数
end=1;
}
for(int i=0;len-i-1>=end;i++){
int n = Character.digit(in.charAt(len-i-1), 16);
//System.out.println("n="+n);
if(n==-1)
throw new Exception("format exception");
sum += n*(1<<(4*i));
//System.out.println("sum="+sum);
}
if(flag)
return sum;
else
return -sum;
}
}