基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
import java.util.Scanner;
public class Main{
public static void transform() {
Scanner sc = new Scanner(System.in);
String arry = "";
String number = sc.next();
if (number.length() <= 8) {
arry = Long.valueOf(number, 16).toString();
}
System.out.println(arry);
}
public static void main(String[] args) {
transform();
}
}
import java.util.Scanner;
public class Main{
public static void convertHexIntoDecimal(char[] arryHex, String hexStr){
StringBuilder binaryStb = new StringBuilder();
int len = hexStr.length();
long count = 1;
long decimal = 0;
String binaryStr = "";
arryHex = hexStr.toCharArray();
for (int i = 0; i < len; i++) { //Convert Hex into Binary
switch (arryHex[i]) {
case '0':
binaryStb.append("0000");
break;
case '1':
binaryStb.append("0001");
break;
case '2':
binaryStb.append("0010");
break;
case '3':
binaryStb.append("0011");
break;
case '4':
binaryStb.append("0100");
break;
case '5':
binaryStb.append("0101");
break;
case '6':
binaryStb.append("0110");
break;
case '7':
binaryStb.append("0111");
break;
case '8':
binaryStb.append("1000");
break;
case '9':
binaryStb.append("1001");
break;
case 'A':
binaryStb.append("1010");
break;
case 'B':
binaryStb.append("1011");
break;
case 'C':
binaryStb.append("1100");
break;
case 'D':
binaryStb.append("1101");
break;
case 'E':
binaryStb.append("1110");
break;
case 'F':
binaryStb.append("1111");
break;
default:
break;
}
}
binaryStr = binaryStb.toString();
len = binaryStr.length();
for(int i = len - 1; i >= 0; i--){
if(binaryStr.charAt(i) == '1'){
decimal = decimal + count;
}
count = count * 2;
}
System.out.println(decimal);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char [] arryHex = new char[8];
String hexStr = sc.next();
convertHexIntoDecimal(arryHex,hexStr);
}
}