十六进制转十进制的方法哪里错了?

这个把十六进制转十进制的方法哪里错了?是Math.pow这里吗?(输入AB8C测试得到269964.0)

import java.util.Locale;
import java.util.Scanner;

public class Hex2Decimal {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
char[] hex=sc.nextLine().toUpperCase(Locale.ROOT).toCharArray();
int exp=hex.length;
double decimal=0;
for (int i=0;i
char M=hex[exp-1-i];
System.out.println("M="+M);
boolean b = M >= 'A' && M <= 'F';
if(M>'A'&&M<'F'){
M=(char)(M+10-'A');
// System.out.println("M="+M);
}
decimal=decimal+M*Math.pow(16,i);

        System.out.println("decimal="+decimal);
    }
    System.out.println(decimal);
}

}

你只是将A-F转换为数值,但'0'到'9'同样要转换为对应的数值啊
if(M>='A'&&M<='F'){
M=(char)(M+10-'A');
// System.out.println("M="+M);
}
else
M = (char)(M-'0');

有现成的方法的
https://blog.csdn.net/qq_31973461/article/details/117788828