package com.swift;//所屬包 import java.util.Scanner;//導入掃描器 public class Hex2Decimal { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("please enter a Hex:"); String hex = scan.nextLine();//讀取一行 hex = hex.toUpperCase();//轉換成大寫字母 System.out.println("The hex is:" + hex);//輸出一下 int decimal = 0; for (int i = 0; i < hex.length(); i++) { if (hexChar2Decimal(hex.charAt(hex.length() - 1 - i)) != -1) {//從16進制數的最后一個字符開始獲取 decimal = (int) (decimal + hexChar2Decimal(hex.charAt(hex.length() - 1 - i)) * Math.pow(16, i));//乘以16的0次冪,然后++ } else { System.out.println("enter error, decimal will be zero!");//如果等於-1則是非法字符 break; } } System.out.println("decimal=" + decimal); } private static int hexChar2Decimal(char charAt) { if (charAt >= 'A' && charAt <= 'F') return charAt - 'A' + 10;//A~F轉換成10進制數 else if (charAt >= '0' && charAt <= '9') return charAt-'0';//0~9字符轉換成10進制 else return -1; } }
十六進制數AF3轉換原理:3*16^0+F*16^1+A*16^2 其中^表示冪運算,F和A需轉換成十進制數15和10
