JAVA 16进制转10进制,解决字符太长溢出问题

1,109 阅读1分钟

一、16进制转10进制

public static BigDecimal hexToDecimal(String hex) {
    BigDecimal result = new BigDecimal(0);
    BigDecimal number = new BigDecimal(0);
    int k = 0;
    for (int i = hex.length() - 1; i >= 0; i--) {
        char str = hex.charAt(i);
        if (str <= '9') {
            number = new BigDecimal(Integer.parseInt(String.valueOf(str)) * Math.pow(16, k));
        }
        if (str == 'A') {
            number = new BigDecimal(10 * Math.pow(16, k));
        }
        if (str == 'B') {
            number = new BigDecimal(11 * Math.pow(16, k));
        }
        if (str == 'C') {
            number = new BigDecimal(12 * Math.pow(16, k));
        }
        if (str == 'D') {
            number = new BigDecimal(13 * Math.pow(16, k));
        }
        if (str == 'E') {
            number = new BigDecimal(14 * Math.pow(16, k));
        }
        if (str == 'F') {
            number = new BigDecimal(15 * Math.pow(16, k));
        }
        k++;
        result = result.add(number);
    }
    return result;
}