Python Program to Convert Octal to Decimal

python programs

Write a program in Python to convert an octal number to its corresponding decimal form.

Example:

Input:   14
Output:  12
 
Input:   5
Output:  5

Following is the standard mathematical way to convert an octal number into decimal.

Octal to Decimal

Let’s implement the steps into the python program using different methods.

Convert Octal to Decimal in Python using Loop

In this method, we will multiply each digit of the octal number to its corresponding value 8 raised to the power to its index (position from right – 1) and sum them up.

octal = input('Enter a Octal number: ')
decimal = 0
 
#length of octal input
l = len(octal)
 
#loop through each digit of binary
for x in octal:
    l = l-1                        #decrease l by 1
    decimal += pow(8,l) * int(x)   #multiply
    
print("Decimal of {p} is {q} ".format(p=octal, q=decimal))

Output

Enter a Octal number: 14                                                                                                      
Decimal of 14 is 12

Convert Octal to Decimal in Python using Recursion

The approach used in this method is the same as the above program but is implemented using recursion.

On each recursive call, we need to pass the octal number by eliminating its last digit. The recursive call will stop when there is only a single left in the octal (i.e base condition).

#'i' represents the nth recursive call as well as
#nth digit from left, so it can be used as an exponent
def octToDec(oct, i):
    
    if oct >= 0 and oct <= 7:
        return oct*pow(8,i)
    
    lastDigit = oct%10;
    return (pow(8,i) * lastDigit) + octToDec(oct//10, i+1);
 
octal = int(input('Enter a Octal number: '))
decimal = octToDec(octal,0)
 
print("Decimal of {p} is {q} ".format(p=octal, q=decimal))

Output

Enter a Octal number: 12                                                                                                      
Decimal of 12 is 10

Do you like the methods?

Comment below your suggestions or doubts if you have any.

Leave a Reply

Your email address will not be published. Required fields are marked *