import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine().trim();
        String hexDigits = s.substring(2); // 去掉前导的0x
        long result = 0;
        for (int i = 0; i < hexDigits.length(); i++) {
            char c = hexDigits.charAt(i);
            int value;
            if (Character.isDigit(c)) {
                value = c - '0';
            } else {
                value = 10 + (c - 'A');
            }
            result = result * 16 + value;
        }
        System.out.println(result);
    }
}

https://www.nowcoder.com/discuss/727521113110073344

思路:

1.读取输入:使用Scanner.nextLine()读取输入的十六进制字符串,并去除前后空格。

2.去除前缀:使用substring(2)方法去掉字符串的前的"0x"。

3.遍历字符:对每个字符进行处理:如果是数字字符,转换为对应的数值。如果是字母字符,比如A-F,转换为对应的10-15。

4.计算十进制值:通过累乘累加,从左到右处理每个字符,逐步计算出最终的十进制值。

5.输出结果:打印最终的十进制结果。