键盘输入一组十六进制的数据,转换成十进制。注意:输入一组数据,转换出来后也是一组数据
Integer.valueOf("要转换的十六进制数",16).
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while(true){
System.out.println("请输入16进制数字,以空格隔开,-----输入bye结束");
line = reader.readLine().trim();
if(line.equals("bye")){
System.out.println("bye !!!!");
break;
}
String[] arr = line.split("\\s");
for(String s :arr){
System.out.print(Integer.valueOf(s, 16) + "\t");
}
System.out.println();
}
}
}
#include<iostream>
using namespace std;
#include<string>
#include<cmath>
void hexadecimal_to_decimalism(string num,int & decimalism_num)
{
/*
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算: 2AF5换算成10进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2 = 2560
第3位: 2 * 16^3 = 8192 +
------------------------------
10997
*/
int i;
int index = num.length()-1; //存放每个数的权值
for (i = 0; i < num.length(); i++)
{
int temp = 0;
if (num[i] >= 'a' && num[i] <= 'z')
{
temp = 10 + (num[i] - 'a');
}
else if (num[i] >= 'A' && num[i] <= 'Z')
{
temp = 10 + (num[i] - 'A');
}
else if (num[i] >= '0' && num[i] <= '9')
{
temp = num[i] - '0';
}
else {
cout << "还有非法字符" << endl;
return;
}
decimalism_num += (int)(temp*pow(16, index));
index--;
}
}
int main()
{
cout << "请输入十六进制数:";
string hexadecimal_num; //存放十六进制数据
cin >> hexadecimal_num;
int decimalism_num=0; //存放十进制数据
hexadecimal_to_decimalism(hexadecimal_num, decimalism_num); //转换函数
cout << "转换后的十进制数为:";
cout << decimalism_num << endl;
system("pause");
return 0;
}