c++任意进制转换十进制
时间: 2025-04-19 11:42:18 浏览: 32
### C++ 中实现任意进制到十进制的转换
为了实现在C++中将任意进制数值转换为十进制数值的功能,可以采用多种方法。一种常见的方式是遍历字符串形式的输入数字,逐位计算其对应的十进制值并累加得到最终结果[^1]。
下面是一个具体的例子,该程序能够接收用户指定的基数以及待转换的数值,并将其按照给定的基数解析成相应的十进制整数:
```cpp
#include <iostream>
#include <cmath> // For pow function
using namespace std;
int convertToDecimal(const string& numStr, int base) {
int decimalValue = 0;
int power = 0;
for (auto it = numStr.rbegin(); it != numStr.rend(); ++it){
char ch = toupper(*it);
int digit = isdigit(ch)? ch-'0' : ch-'A'+10;
if(digit >= base || digit<0){
cerr << "Invalid number format or invalid base provided."<< endl;
exit(EXIT_FAILURE);
}
decimalValue += digit * static_cast<int>(pow(base,power));
power++;
}
return decimalValue;
}
int main(){
string inputNumber;
int base;
cout << "Enter the number to be converted: ";
cin >> inputNumber;
cout << "Enter its base (between 2 and 36): ";
cin >> base;
try{
if(base<=1||base>36){
throw runtime_error("Base must between 2 and 36");
}
else{
int result = convertToDecimal(inputNumber, base);
cout << "The equivalent value in decimal system is:"<<result<<endl;
}
}
catch(exception const &e){
cerr<<"Error occurred during conversion:"<< e.what()<<'\n';
}
return 0;
}
```
此代码片段定义了一个名为`convertToDecimal` 的辅助函数来执行实际的转换操作。它接受两个参数——要被转换的数字串 `numStr` 和目标基底 `base` 。对于每一个字符位置上的有效数字(无论是阿拉伯数字还是字母),都会依据当前的位置权重乘以其代表的实际数值后相加以获得总的十进制表示。
此外,在主函数内还加入了简单的异常处理机制用于捕获可能发生的错误情况,如非法的基础范围或不合法的输入格式等[^4]。
阅读全文
相关推荐


















