版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starjuly/article/details/72764886
public static void main(String args[]){
String hex = "00000a9f0000002f";
String decimal = getDecimal(hex);
System.out.println(decimal); //2719 47
}
private static String getDecimal(String string) {
char[] ca = string.toCharArray();
//拼接16进制 每隔8位添加一个空格
StringBuilder sb = new StringBuilder();
for (int j = 0; j < ca.length; j++) {
sb.append(ca[j]);
if ((j + 1) % 8 == 0) {
sb.append(" ");
}
}
System.out.println(sb);
StringBuilder result = new StringBuilder();
String[] split = sb.toString().split(" ");
for (int i = 0; i < split.length; i++) {
long btd = hexToDecimal(split[i].toString());
result.append(btd + " ");
}
return result.toString();
}
private static long hexToDecimal(String sb) {
char[] ca1 = sb.toCharArray();
Map<Integer, Character> map = new HashMap<Integer, Character>();
for (int i = 0; i < ca1.length; i++) {
map.put(i,ca1[i]);
}
// System.out.println(string);
long sum = 0;
int number = 0;
for (int i = 0; i < ca1.length; i++) {
char value = (char)map.get(i);
//如果不是数字则进行转换
if(!Character.isDigit(value)){
int b = (int)value;
number = value - 87;
}else{
number = value - 48 ;
}
if(i == 7){
sum += number;
}
if(i == 6){
sum += number *16;
}
if(i == 5){
sum += number *16*16;
}
if(i == 4){
sum += number *16*16*16;
}
if(i == 3){
sum += number *16*16*16*16;
}
if(i == 2){
sum += number *16*16*16*16*16;
}
if(i == 1){
sum += number *16*16*16*16*16*16;
}
if(i == 0){
sum += number *16*16*16*16*16*16*16;
}
}
return sum;
}