大家好,欢迎来到IT知识分享网。
【问题描述】
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
【锦囊1】
按16进制展开。
【锦囊2】
按数位依次操作,每次将前面的乘16,再加上当前数位的值。
代码:
package 蓝桥;
import java.util.Scanner;
public class 十六进制转十进制 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
String str=scan.next();
int[] num=new int[str.length()];
//将每一位的16进制数转为10进制
for(int i=0;i<str.length();i++) {
num[i]=change(str.charAt(i));
}
//每一位的元素乘以它的权相加
int sum=0;
for(int i=0;i<num.length;i++) {
sum+=Math.pow(16,num.length-1-i)*num[i];
}
System.out.println(sum);
}
public static int change(char c) {
if(c==’A’) {
return 10;
}
else if(c==’B’) {
return 11;
}
else if(c==’C’) {
return 12;
}
else if(c==’D’) {
return 13;
}
else if(c==’E’) {
return 14;
}else if(c==’F’) {
return 15;
}
else {
return Integer.parseInt(c+””);
}
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33122.html