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.
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:

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

Finally, the hexadecimal number is: a53

Below is the implementation of the above approach:

## C++

 `// C++ program to convert Octal``// to Hexadecimal``#include``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;``    ` `    ``// 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``;` `  ``// 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