一、使用步骤
1.引入库
代码如下 :
/**
* 把十六进制数字转换为十进制数字
* @param hexSrcStr
* @return
* 170
*/
public static String convertHex2Decimal(String hexSrcStr){
if (hexSrcStr==null || hexSrcStr.trim().length()==0){
return null;
}
if (!hexSrcStr.startsWith("0x")){
System.out.println("十六进制数字输入非法!");
return null;
}
String substring1 = hexSrcStr.substring(2);
for (int i = 0; i < substring1.length(); i++) {
char charAt = substring1.charAt(i);
if (!(Character.isDigit(charAt) || ( charAt >= 'A' && charAt <= 'F'))){
return null;
}
}
HashMap<Character, Integer> characterIntegerHashMap = new HashMap<>();
characterIntegerHashMap.put('A',10);
characterIntegerHashMap.put('B',11);
characterIntegerHashMap.put('C',12);
characterIntegerHashMap.put('D',13);
characterIntegerHashMap.put('E',14);
characterIntegerHashMap.put('F',15);
// 0xAA
String substring = hexSrcStr.substring(2);
int length = substring.length();
int sum=0;
int ret=1;
for (int i = length-1; i >=0 ; i--) {
if (i==0){
ret=1;
}else {
for (int j =0;j<i;j++) {
ret*=16;
}
}
char charAt = substring.charAt((length-1)-i);
Integer integer=0;
Integer integer1=0;
if (Character.isDigit(charAt)){
String charStr = String.valueOf(charAt);
integer = Integer.valueOf(charStr);
integer*=ret;
}else if ( charAt >= 'A' && charAt <= 'F'){
integer1 = characterIntegerHashMap.get(charAt);
integer1*=ret;
}
if (Character.isDigit(charAt)){
sum+=integer;
ret=1;
}else if ( charAt >= 'A' && charAt <= 'F'){
sum+=integer1;
ret=1;
}
}
return String.valueOf(sum);
}