Skip to content
Related Articles

Related Articles

Program to Convert Octal to Hexadecimal
  • Last Updated : 07 Dec, 2020

Given an Octal number, the task is to convert it into a Hexadecimal number.

Examples: 

Input:  47 
Output: 27
Explanation:
Decimal value of 47 is = (7 * 1) + (4 * 8) = 39

Now, convert this number to hexadecimal
39/16 -> quotient = 2, remainder = 7
2/16 ->  quotient = 0, remainder = 2

So, the equivalent hexadecimal number is = 27

Input: 235
Output:  9d

Approach:
An Octal Number or oct for short is the base-8 number and uses the digits 0 to 7. Octal numerals can be made from binary numerals by grouping consecutive binary digits into groups of three (starting from the right).

A Hexadecimal Number is a positional numeral system with a radix, or base, of 16 and uses sixteen distinct symbols. It may be a combination of alphabets and numbers. It uses numbers from 0 to 9 and alphabets A to F.

Steps of Conversion:
The simplest way is to convert the octal number into a decimal, then the decimal into hexadecimal form. 



  1. Write the powers of 8 (1, 8, 64, 512, 4096, and so on) beside the octal digits from bottom to top.
  2. Multiply each digit by its power.
  3. Add up the answers. This is the decimal solution.
  4. Divide the decimal number by 16.
  5. Get the integer quotient for the next iteration (if the number will not divide equally by 16, then round down the result to the nearest whole number).
  6. Keep a note of the remainder, it should be between 0 and 15.
  7. Repeat the steps from step 4. until the quotient is equal to 0.
  8. Write out all the remainders, from bottom to top.
  9. Convert any remainders bigger than 9 into hex letters. This is the hex solution.

For example, if the given octal number is 5123:

DigitPowerMultiplication
55122560
16464
2816
313

Then the decimal number (2560 + 64 + 16 + 3) is: 2643

DivisionQuotientRemainder
2643/161653
165/16105
10/16010 (a)

Finally, the hexadecimal number is: a53

Below is the implementation of the above approach: 

C++




// C++ program to convert Octal
// to Hexadecimal
#include<bits/stdc++.h>
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;
}
 
// Function to convert decimal
// to hexadecimal
string decToHexa(int n)
{
     
    // char array to store
    // hexadecimal number
    char hexaDeciNum[100];
     
    // counter for hexadecimal
    // number array
    int i = 0;
    while(n != 0)
    {   
         
        // Temporary variable to
        // store remainder
        int temp  = 0;
           
        // Storing remainder in
        // temp variable.
        temp = n % 16;
           
        // Check if temp < 10
        if (temp < 10)
        {
            hexaDeciNum[i] = temp + 48;
            i++;
        }
        else
        {
            hexaDeciNum[i] = temp + 87;
            i++;
        }
        n = n / 16;
    }
     
    string ans = "";
       
    // Printing hexadecimal number array
    // in reverse order
    for(int j = i - 1; j >= 0; j--)
    {
        ans += hexaDeciNum[j];
    }
    return ans;
}
 
// Driver Code
int main()
{
    string hexnum;
    int decnum, octnum;
     
    // Taking 5123 as an example of
    // Octal Number.
    octnum = 5123;
     
    // Convert Octal to Decimal
    decnum = octalToDecimal(octnum);
     
    // Convert Decimal to Hexadecimal
    hexnum = decToHexa(decnum);
     
    cout << "Equivalent Hexadecimal Value = "
         << hexnum << endl;
}
 
// This code is contributed by pratham76

Java




// Java Program to Convert Octal
// to Hexadecimal
 
import java.util.Scanner;
 
public class JavaProgram {
    public static void main(String args[])
    {
        String octnum, hexnum;
        int decnum;
        Scanner scan = new Scanner(System.in);
         
        // Taking 5123 as an example of
        // Octal Number.
        octnum = "5123";
         
        // Convert Octal to Decimal
        decnum = Integer.parseInt(octnum, 8);
         
        // Convert Decimal to Hexadecimal
        hexnum = Integer.toHexString(decnum);
 
        System.out.print("Equivalent Hexadecimal Value = "
                                                + hexnum);
    }
}

Python3




# Python3 program to convert octal
# to hexadecimal
 
# Taking 5123 as an example of
# octal number
octnum = "5123"
 
# Convert octal to decimal
decnum = int(octnum, 8)
 
# Convert decimal to hexadecimal
hexadecimal = hex(decnum).replace("0x", "")
 
# Printing the hexadecimal value
print("Equivalent Hexadecimal Value =", hexadecimal)
 
# This code is contributed by virusbuddah_

C#




// C# Program to Convert Octal
// to Hexadecimal
using System;
class GFG{
     
// Function to convert octal
// to decimal
static int octalToDecimal(int n)
{
  int num = n;
  int dec_value = 0;
 
  // Initializing base value 
  // to 1, i.e 8^0
  int b_ase = 1;
 
  int temp = num;
  while (temp > 0) 
  {
    // 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 * b_ase;
 
    b_ase = b_ase * 8;
  }
   
  return dec_value;
}
 
// Function to convert decimal
// to hexadecimal
static string decToHexa(int n)
  // char array to store 
  // hexadecimal number
  char []hexaDeciNum = new char[100];
 
  // counter for hexadecimal
  // number array
  int i = 0;
  string ans = "";
 
  while(n != 0)
  
    // temporary variable to 
    // store remainder
    int temp = 0;
 
    // storing remainder
    // in temp variable.
    temp = n % 16;
 
    // check if temp < 10
    if(temp < 10)
    {
      hexaDeciNum[i] = (char)(temp + 48);
      i++;
    }
    else
    {
      hexaDeciNum[i] = (char)(temp + 87);
      i++;
    }
 
    n = n / 16;
  }
 
  for(int j = i - 1; j >= 0; j--)
  {
    ans += hexaDeciNum[j];
  }
   
  return ans;
}
   
// Driver code
public static void Main(string []args)
{
  string octnum, hexnum;
  int decnum;
 
  // Taking 5123 as an
  // example of Octal Number.
  octnum = "5123";
 
  // Convert Octal to Decimal
  decnum = octalToDecimal(Int32.Parse(octnum));
 
  // Convert Decimal to Hexadecimal
  hexnum = decToHexa(decnum);
 
  Console.Write("Equivalent Hexadecimal Value = " +
                 hexnum);
}
}
 
// This code is contributed by rutvik_56
Output: 
Equivalent Hexadecimal Value = a53

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up
Recommended Articles
Page :