Octal to Decimal Conversion in C++

Octal to Decimal Conversion

Octal to Decimal conversion is the process of converting an octal number (base-8) into its equivalent decimal number (base-10). Each octal digit represents a power of 8.

For example, the octal number 17 is equal to decimal 15 because:

(1 × 8¹) + (7 × 8⁰) = 8 + 7 = 15

We will explore three methods to convert an octal number to a decimal number using C++ programming.

Method 1: Using Loop

We extract each digit of the octal number, multiply it by the corresponding power of 8, and sum the results.

#include <iostream>
#include <cmath>
using namespace std;

int octalToDecimal(long long octal) {
    int decimal = 0, i = 0;
    while (octal != 0) {
        int lastDigit = octal % 10;
        decimal += lastDigit * pow(8, i);
        octal /= 10;
        i++;
    }
    return decimal;
}

int main() {
    long long octal;
    cout << "Enter an octal number: ";
    cin >> octal;
    
    cout << "Decimal equivalent: " << octalToDecimal(octal);
    return 0;
}
            

Output:

Enter an octal number: 17
Decimal equivalent: 15

Method 2: Using Built-in Function

We can use stringstream to directly convert an octal number to a decimal number.

#include <iostream>
#include <sstream>
using namespace std;

int main() {
    int decimal;
    string octal;
    cout << "Enter an octal number: ";
    cin >> octal;
    
    stringstream ss;
    ss << octal;
    ss >> oct >> decimal;
    
    cout << "Decimal equivalent: " << decimal;
    return 0;
}
            

Output:

Enter an octal number: 17
Decimal equivalent: 15

Method 3: Using Recursion

We recursively extract each digit and multiply it by the corresponding power of 8.

#include <iostream>
#include <cmath>
using namespace std;

int octalToDecimalRecursive(long long octal, int power) {
    if (octal == 0)
        return 0;
    return (octal % 10) * pow(8, power) + octalToDecimalRecursive(octal / 10, power + 1);
}

int main() {
    long long octal;
    cout << "Enter an octal number: ";
    cin >> octal;
    
    cout << "Decimal equivalent: " << octalToDecimalRecursive(octal, 0);
    return 0;
}
            

Output:

Enter an octal number: 17
Decimal equivalent: 15
Numbers

Below You will find some of the most important codes in languages like C, C++, Java, and Python. These codes are of prime importance for college semester exams and online tests.

Getting Started

HCF - Highest Common Factor: C C++ Java Python

LCM - Lowest Common Multiple: C C++ Java Python

GCD - Greatest Common Divisor: C C++ Java Python

Binary to Decimal Conversion: C C++ Java Python

Octal to Decimal Conversion: C C++ Java Python

Hexadecimal to Decimal Conversion: C C++ Java Python

Decimal to Binary Conversion: C C++ Java Python

Decimal to Octal Conversion: C C++ Java Python

Decimal to Hexadecimal Conversion: C C++ Java Python

Binary to Octal Conversion: C C++ Java Python

Quadrants in which a given coordinate lies: C C++ Java Python

Addition of Two Fractions: C C++ Java Python

Calculate the Area of a Circle: C C++ Java Python

Convert Digit/Number to Words: C C++ Java Python

Finding Roots of a Quadratic Equation: C C++ Java Python