蓝桥杯 基础练习 十六进制转十进制 java

package jinzhizhuanhuan;
import java.util.Scanner;
public class HextoDecimal {
	public static int compare(char ch){//将A~F转换为对应的十进制数
		int[]a=new int[75];
		int k=65,i=10;//A的assic码为65
		while(i<16)a[k++]=i++;//a['A']=10,依次类推
		return a[ch];
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			//StringBuider hex=new StringBuilder();
			String str=sc.nextLine();
			//StringBuilder sb=new StringBuilder(str);
			String hex=new StringBuilder(str).reverse().toString();
			//System.out.println(hex);
			int t=0;
			long result=0;
			while(t<hex.length()){
				if('A'<=hex.charAt(t)&&hex.charAt(t)<='F'){
					int b=compare(hex.charAt(t));
					//System.out.println(b);
					result+=b*(long)Math.pow(16,t++);
				}
				else{
					int tem=hex.charAt(t)-'0';
					result+=tem*(long)Math.pow(16,t++);
				}
			}
			System.out.println(result);
		}
	}
}

当然还有一个更简单的办法,就是使用java类来实现

import java.util.Scanner;
public class Main{
	public static void main(String[]args){
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String hex=sc.nextLine();
			System.out.println(Long.parseLong(hex,16));
		}
	}

}


Guess you like

Origin blog.csdn.net/lollo01/article/details/57079531