cpp语言将八进制数字字符串转为十进制数字字符串代码
时间: 2023-07-12 16:06:08 浏览: 105
以下是将八进制数字字符串转换为十进制数字字符串的C++代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char octal[20];
cout << "Enter an octal number: ";
cin >> octal;
int len = strlen(octal);
int dec = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--) {
int digit = octal[i] - '0';
dec += digit * base;
base *= 8;
}
cout << "Decimal equivalent: " << dec << endl;
return 0;
}
```
这个程序首先要求用户输入一个八进制的数字字符串,然后将其转换为十进制数字字符串,并输出结果。在程序中,我们首先计算出八进制数字字符串的长度,然后使用循环从右到左依次处理每个数字,并使用base变量来跟踪每个数字所代表的权重。最终,我们将所有数字的值相加,得到了十进制数字的值。
相关问题
cpp语言将长度为50的八进制数字字符串转为十进制数字字符串代码
以下是将长度为50的八进制数字字符串转为十进制数字字符串的 C++ 代码:
```c++
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string octalNumStr = "12345671234567123456712345671234567123456712345671";
string decimalNumStr = "";
int len = octalNumStr.length();
int power = len - 1;
int decimalNum = 0;
for (int i = 0; i < len; i++)
{
decimalNum += (octalNumStr[i] - '0') * pow(8, power);
power--;
}
while (decimalNum != 0)
{
decimalNumStr = to_string(decimalNum % 10) + decimalNumStr;
decimalNum /= 10;
}
cout << "Octal number: " << octalNumStr << endl;
cout << "Decimal number: " << decimalNumStr << endl;
return 0;
}
```
在这个例子中,我们将八进制数字字符串存储在 `octalNumStr` 中,然后将其转换为一个十进制整数 `decimalNum`。接下来,我们使用一个循环将 `decimalNum` 转换为一个十进制数字字符串 `decimalNumStr`,并使用 `cout` 输出结果。
把string类的八进制数字字符串转为string类的十进制字符串(字符串表示的数字可能会超过long long int的范围)
可以使用字符串模拟加法的方法来实现将八进制数字字符串转为十进制数字字符串。
具体实现步骤如下:
1. 从右往左遍历八进制数字字符串的每个字符,将每个字符转为对应的十进制数字,并将其存储在一个数组中。
2. 从数组的最后一个元素开始向前遍历,对于每个元素,将其乘以$8^k$,其中$k$为该元素在数组中的位置(从0开始计数),并将乘积累加到一个字符串中。
3. 对于步骤2中得到的字符串,使用字符串模拟加法的方法将其转为十进制数字字符串。
下面是代码实现:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string octalToDecimal(string octal) {
int n = octal.size();
int a[n];
for (int i = 0; i < n; i++) {
a[i] = octal[i] - '0';
}
string decimal = "0";
for (int i = n - 1; i >= 0; i--) {
string temp = to_string(a[i] * pow(8, n - 1 - i));
decimal = addStrings(decimal, temp);
}
return decimal;
}
string addStrings(string num1, string num2) {
string result = "";
int carry = 0;
int i = num1.size() - 1, j = num2.size() - 1;
while (i >= 0 || j >= 0 || carry > 0) {
int sum = carry;
if (i >= 0) sum += num1[i] - '0';
if (j >= 0) sum += num2[j] - '0';
result += to_string(sum % 10);
carry = sum / 10;
i--; j--;
}
reverse(result.begin(), result.end());
return result;
}
int main() {
string octal = "12345";
string decimal = octalToDecimal(octal);
cout << decimal << endl;
return 0;
}
```
在本例中,我们将八进制数字字符串"12345"转化为十进制数字字符串"5349"。
阅读全文