题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String hex = in.nextLine(); //去掉0x前缀 hex = hex.substring(2); int decimal = hexToDecimal(hex); System.out.println(decimal); } public static int hexToDecimal(String hex) { int decimal = 0; int len = hex.length(); for (int i = 0; i < len; i++) { char hexChar = hex.charAt(len - 1 - i); //将每一个十六进制字段转成十进制后,乘以16的i次方 decimal += hexCharToDecimal(hexChar) * (int) Math.pow(16, i); } return decimal; } public static int hexCharToDecimal(char hexChar) { if (hexChar >= '0' && hexChar <= '9') { return hexChar - '0'; } else if (hexChar >= 'A' && hexChar <= 'F') { return hexChar - 'A' + 10; } else if (hexChar >= 'a' && hexChar <= 'f') { return hexChar - 'a' + 10; } else { throw new IllegalArgumentException("Invalid hex character: " + hexChar); } } }