C++ n进制转化为十进制
时间: 2024-09-13 13:11:47 浏览: 65
十二进制转化为十进制.cpp
5星 · 资源好评率100%
在C++中,将n进制数转化为十进制数通常涉及对n进制数的每一位进行遍历,并将其转换为对应的十进制数。这个过程可以通过以下步骤实现:
1. 确定n进制数的每一位的数值和位置。
2. 对每一位数值乘以其权重(即n的幂),权重取决于该位的位置。
3. 将所有位的结果相加得到最终的十进制数。
以下是一个简单的例子,展示如何将一个三进制数转化为十进制数:
假设有一个三进制数"210",要将其转换为十进制数,可以按照以下步骤进行:
- 从右到左,将每一位数乘以3的相应幂次(从0开始计数)。
- 第一位(最右边的0)乘以\(3^0\),即\(0 * 3^0 = 0\)。
- 第二位(中间的1)乘以\(3^1\),即\(1 * 3^1 = 3\)。
- 第三位(最左边的2)乘以\(3^2\),即\(2 * 3^2 = 18\)。
- 将这三个结果相加:\(0 + 3 + 18 = 21\)。
所以,三进制数"210"对应的十进制数是21。
以下是C++代码的一个示例,用于将n进制数转化为十进制数:
```cpp
#include <iostream>
#include <string>
#include <cmath>
int nBaseToDecimal(const std::string& nBaseNumber, int base) {
int decimalNumber = 0;
int length = nBaseNumber.length();
for (int i = 0; i < length; ++i) {
int digit = nBaseNumber[i] - '0'; // 将字符转换为整数
if (digit < 0 || digit >= base) {
std::cerr << "Invalid digit for the base" << std::endl;
return -1;
}
decimalNumber += digit * std::pow(base, length - i - 1);
}
return decimalNumber;
}
int main() {
std::string nBaseNumber = "210";
int base = 3;
int decimalNumber = nBaseToDecimal(nBaseNumber, base);
std::cout << "The decimal equivalent of the base " << base << " number " << nBaseNumber << " is " << decimalNumber << std::endl;
return 0;
}
```
在这个示例中,`nBaseToDecimal`函数接受一个表示n进制数的字符串和基数作为参数,然后计算并返回对应的十进制数。
阅读全文