c++ 任意进制转十进制
时间: 2023-08-29 15:13:29 浏览: 80
假设要将一个 $n$ 位的 $k$ 进制数 $num$ 转换为十进制数,可以使用以下公式:
$$
num_{10} = \sum_{i=0}^{n-1} num_i \cdot k^{n-1-i}
$$
其中 $num_i$ 表示 $num$ 的第 $i$ 位数字。
以下是一个 C++ 实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int main() {
string num; // 输入的数字
int k; // 进制
cin >> num >> k;
int n = num.size(); // 数字的位数
int num10 = 0; // 转换后的十进制数
for (int i = 0; i < n; i++) {
int digit; // 当前位的数字
if (isdigit(num[i])) {
digit = num[i] - '0'; // 将字符转换为数字
} else {
digit = num[i] - 'A' + 10; // 将大写字母转换为数字
}
num10 += digit * pow(k, n-1-i);
}
cout << num10 << endl;
return 0;
}
```
注意,上述代码中假设输入的数字为字符串类型,因为如果输入的数字太大,可能会超出 C++ 内置数据类型的表示范围。如果需要处理大数,可以使用 C++ 的高精度库,例如 GMP。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)