基础算法—十六转十进制
【摘要】 问题描述 从键盘输入一个不超过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表示。
注:十六进制数中的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)