C++程序 八进制转十进制的转换
给定一个八进制的数字,我们需要编写一个程序将给定的八进制数转换成相应的十进制数。
示例:
输入: 67
输出: 55
输入: 512
输出: 330
输入: 123
输出: 83
其基本思路是先从右侧开始提取给定八进制数的各位数,并用一个变量dec_value存储。在提取八进制数的各位数时,乘以恰当的基数(8的幂),并将其加到变量dec_value中。最终,在变量dec_value中存储所需的十进制数。
例如,如果八进制数为67,则
dec_value = 6*(8^1) + 7*(8^0) = 55
下面的图解释了如何将八进制数(123)转换为等价的十进制值:
下面是实现上述思路的代码:
// C++ program to convert octal
// to decimal
#include <iostream>
using namespace std;
// Function to convert octal
// to decimal
int octalToDecimal(int n)
{
int num = n;
int dec_value = 0;
// Initializing base value to 1,
// i.e 8^0
int base = 1;
int temp = num;
while (temp)
{
// Extracting last digit
int last_digit = temp % 10;
temp = temp / 10;
// Multiplying last digit with
// appropriate base value and adding
// it to dec_value
dec_value += last_digit * base;
base = base * 8;
}
return dec_value;
}
// Driver code
int main()
{
int num = 67;
cout << octalToDecimal(num) << endl;
}
输出:
55
时间复杂度: O(logN),其中N为给定的数字。
辅助空间复杂度: O(1)
使用预定义函数
// C++ program to convert octal
// to decimal
#include <iostream>
using namespace std;
int OctToDec(string n)
{
return stoi(n, 0, 8);
}
// Driver code
int main()
{
string n = "67";
cout << OctToDec(n);
return 0;
}
// This code is contributed by phasing17```
输出:
55