C++程序 八进制转十进制的转换

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++程序 八进制转十进制的转换

下面是实现上述思路的代码:

// 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例