描述
输入任意进制的数(十六进制以大写字母输入),以十进制结果输出。
例如:
输入: FFFF
输出:65535
将输入内容保存在字符串变量中,将单个字符转化成对应的十进制数,然后乘上其对应位上的权重即可。
#include <iostream>
using namespace std;
int main() {
string str;
int finalNum = 0;//记录累加和
int R;//基数
cout << "请输入要转换的数(十六进制用大写字母输入):" << endl;
cin >> str;
cout << "请输入要转换的数的进制R:" << endl;
cin >> R;
int length = str.length();
int power = 1;//位权
for (int i = length - 1; i >= 0; i--) { //从后往前,将各个字符按对应权值相加
char s = str[i];
int num;
switch (s) {
case 'A':
num = 10;
break;
case 'B':
num = 11;
break;
case 'C':
num = 12;
break;
case 'D':
num = 13;
break;
case 'E':
num = 14;
break;
case 'F':
num = 15;
break;
default:
num = s - '0';
}
finalNum = finalNum + num * power;
power = power * R;//下一位对应的权值
}
cout << "对应十进制数为: " << finalNum;
return 0;
}
注: 1.对于39行,
num = s - '0'
,表示将字符s转换为整型。
2. 默认输出为无符号数。
十进制转其他进制:https://blog.csdn.net/qq_43643944/article/details/115350835