基础算法—十六转十进制

举报
顾问 发表于 2022/02/22 01:27:49 2022/02/22
【摘要】 问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入       FFFF样例输出       65535代码实现import java.math.BigInteger;import java.util.Scanner;public class Main {//十六转...
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
       FFFF
样例输出
       65535

代码实现
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
//十六转十进制
	public enum num{
		//定义一个枚举存储十六进制A~F值的枚举
		A(10),B(11),C(12),D(13),E(14),F(15);
		private int value;
		num(int value) {
			this.value=value;
		}
		private int getnum() {
			return value;
		}
		private void setnum(int value) {
			this.value=value;
		}
	}
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		String x=sc.nextLine();
		String y="";
		//sum最后输出的值
		//z代表16的几次方
		long sum=0,z=0;
		if(x.length()<=8) {
			//按权展开
			for (int i = x.length(); i > 0; i--) {
				char a=x.charAt(i-1);
				if(a>=65&&a<=70) {//判断a是否在A~F之间
					sum+=num.valueOf(String.valueOf(a)).value*Math.pow(16,z);
				}else if(a>=48&&a<=57) {//判断a是否在0~9之间
					sum+=Integer.parseInt(String.valueOf(a))*Math.pow(16,z);
				}
				z++;
			}
		}
		System.out.println(sum);
	}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。