一、十六进制转换为十进制
#include <iostream>
#include <climits>
#include <cmath>//进行一些数学运算
#include <ctime>//得到标准时间
#include <cstdlib>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
//将16进制中的字母,转化为十进制中的数
int hexCharToDecimal(char ch) {
ch = toupper(ch);//确保字母是大写字母
if (ch >= 'A' && ch <= 'F')
return 10 + ch - 'A';
else
return ch - '0';
}
//输入一个十六进制数
int hex2Dec(const string& hex) {
int decimalValue = 0, i = 0;
for (i = 0; i < hex.size(); i++) {
decimalValue = decimalValue * 16 + hexCharToDecimal(hex[i]);
}
return decimalValue;
}
int main(void) {
string hex;
//输入一个十六进制数
cout << "输入一个十六进制数 : " << endl;
cin >> hex;
cout << "十六进制数是: " << hex << "对应的十进制数是: "<< hex2Dec(hex) << endl;
}
二、十进制转换十六进制
//将十进制转换为十六进制
string sixteenNum(int num) {
string sixteen;
string mid,s;
int x;
while (num != 0) {
x = num % 16;
if (x < 10) {//将x转换为字符形式
s = x + '0';
}
if (x >= 10) {
s = x + 'A' - 10;
}
mid = s + mid;//将字符串进行拼接
num = num / 16;
}
return mid;
}
int main(void) {
string hex;
int num;
//输入一个十进制数
cout << "输入一个十进制数 : " << endl;
cin >> num;
cout << "十进制数是: " << num << "对应的十六进制数是: "<< sixteenNum(num) << endl;
}
三、十进制转换为八进制
#include <iostream>
#include <climits>
#include <cmath>//进行一些数学运算
#include <ctime>//得到标准时间
#include <cstdlib>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
//将八进制转换为十进制
int hex2Dec(const string& hex) {
int decimalValue = 0, i = 0;
for (i = 0; i < hex.size(); i++) {
decimalValue = decimalValue * 8 + (hex[i] - '0');
}
return decimalValue;
}
int main(void) {
string hex;
//输入一个八进制数
cout << "输入一个八进制数 : " << endl;
cin >> hex;
cout << "八进制数是: " << hex << "对应的十进制数是: "<< hex2Dec(hex) << endl;
}
方法二、
int eightNum(int num) {
int temp,sum = 0;
int n = 1;
while (num != 0) {
temp = num % 10;
num = num / 10;
sum += n * temp;
n *= 8;
}
return sum;
}
int main(void) {
string hex;
int num;
//输入一个八进制数
cout << "输入一个八进制数 : " << endl;
cin >> num;
cout << "八进制数是: " << num << "对应的十进制数是: "<< eightNum(num) << endl;
}