发布网友 发布时间:2022-04-23 15:30
共1个回答
热心网友 时间:2023-10-08 15:30
十六进制转换成十进制,必须先把十六进制转换成二进制,给你看一下我写的代码:
import java.util.Scanner;
public class test{
//判断一个字符串是否是一个十六进制的字符串
private static boolean isXNumber(String str){
int count = 0;
str = str.toUpperCase(); //如果输入小写字符就转成大写字母
for (int i = 0; i < str.length(); i++) {
if (((int)str.substring(i, i+1).charAt(0)>=48&&(int)str.substring(i, i+1).charAt(0)<=57)||
((int)str.substring(i, i+1).charAt(0)>=65&&(int)str.substring(i, i+1).charAt(0)<=70)) {
count++;
}
}
if (count==str.length()) {
return true;
}else {
return false;
}
}
//将十六进制字符串转成二进制字符串
private static String XNumberToBNumber(String str){
String temp="";
if (isXNumber(str)==true) {
for (int i = 0; i < str.length(); i++) {
if (str.substring(i, i+1).charAt(0)=='0') {
temp+="0000";
}else if (str.substring(i, i+1).charAt(0)=='1') {
temp+="0001";
}else if (str.substring(i, i+1).charAt(0)=='2') {
temp+="0010";
}else if (str.substring(i, i+1).charAt(0)=='3') {
temp+="0011";
}else if (str.substring(i, i+1).charAt(0)=='4') {
temp+="0100";
}else if (str.substring(i, i+1).charAt(0)=='5') {
temp+="0101";
}else if (str.substring(i, i+1).charAt(0)=='6') {
temp+="0110";
}else if (str.substring(i, i+1).charAt(0)=='7') {
temp+="0111";
}else if (str.substring(i, i+1).charAt(0)=='8') {
temp+="1000";
}else if (str.substring(i, i+1).charAt(0)=='9') {
temp+="1001";
}else if (str.substring(i, i+1).charAt(0)=='A') {
temp+="1010";
}else if (str.substring(i, i+1).charAt(0)=='B') {
temp+="1011";
}else if (str.substring(i, i+1).charAt(0)=='C') {
temp+="1100";
}else if (str.substring(i, i+1).charAt(0)=='D') {
temp+="1101";
}else if (str.substring(i, i+1).charAt(0)=='E') {
temp+="1110";
}else if (str.substring(i, i+1).charAt(0)=='F') {
temp+="1111";
}}
}
return temp;
}
public static void main(String[] args) {
System.out.print("请输入一个十六进制数:");
String XNumner= new Scanner(System.in).next();
if (isXNumber(XNumner)==false) {
System.out.println("你输入的不是一个十六进制数!");
}else{
int sum = 0;
int count = XNumberToBNumber(XNumner).length() - 1;
for (int i = 0; i < XNumberToBNumber(XNumner).length(); i++) {
sum+=(Integer.parseInt(XNumberToBNumber(XNumner).substring(i,i+1))*(int)Math.pow(2, count));
count--;
}
System.out.print("十六进制数:"+XNumner+",对应的十进制数是:"+sum);
}
}
}