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

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

在Java中有一个特定的类Long,里面有一个方法Long.parseLong(s,16)就是将字符串s的十六进制转换成十进制

源代码:

import java.util.*;
public class Main{
      public static void main(String []args)
			{
				Scanner input = new Scanner(System.in);
				String s = input.next();
				input.close();
				long sum = Long.parseLong(s,16);
				System.out.println(sum);
			}
}

还有就是通过判断来写,就是先将输入的字符串转成字符数组,然后来判断是不是10-15那几个特殊字符,然后通过16的次方来判断

具体代码:

import java.util.*;

public class Test11 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String s = input.next();
		int n = s.length();
		char c[] = s.toCharArray();
		long sum = 0;
		for(int i = 0;i<s.length();i++)
		{
			if((int)c[i]-48>9)
			{
				if(c[i] == 'A')
				{
					sum += 10*Math.pow(16, n-i-1);
				}
				if(c[i] == 'B')
				{
					sum += 11*Math.pow(16, n-i-1);
				}
				if(c[i] == 'C')
				{
					sum += 12*Math.pow(16, n-i-1);
				}
				if(c[i] == 'D')
				{
					sum += 13*Math.pow(16, n-i-1);
				}
				if(c[i] == 'E')
				{
					sum += 14*Math.pow(16, n-i-1);
				}
				if(c[i] == 'F')
				{
					sum += 15*Math.pow(16, n-i-1);
				}
			}
			else
			{
				sum += ((int)c[i]-48)*Math.pow(16, n-i-1);
			}
		}
        System.out.println(sum);
	}

}

猜你喜欢

转载自blog.csdn.net/lytwy123/article/details/81156862
今日推荐