C C++ JAVA PYTHON SQL HTML CSS DSA Robotics AWS CODING INTERVIEW PREPARATION

Made with  & Code

# Program to convert hexadecimal to octal in C

Written By -

### Program to convert hexadecimal to octal

Hexadecimal numbers are the numbers having base 16. It uses 16 different digits to represent the numbers. It may be a combination of alphabets and numbers. It uses numbers from 0 to 9 and alphabets A to F.

What are Octal Numbers?

Octal numbers are numbers having base 8. These numbers use digits 0 to 7. It is denoted as o8 and o is an octal decimal number.

Example: (11)8, (321)8,(46)8

### # Hexadecimal to Octal Conversion (Algorithm)

Conversion of hexadecimal to octal cannot be done directly. Firstly we need to convert hexadecimal into its equivalent decimal number then decimal to octal. Follow the steps below to understand the process.

1. Consider the given hexadecimal number and count the number of digits in the number.
2. If n is the position of the digit from the right end then multiply each digit with 16n-1
3. Add the terms after multiplication. Resultant is the equivalent decimal form
4. Divide the decimal number with 8. Note down the remainder.
5. Continue step 6 and 7 with the quotient, until the quotient is zero
6. Write the remainders in reverse order
7. The obtained number is the required result.

Example:

Output:- Octal number: 56554

Code:

``````// C Program for Hexadecimal to Octal Conversion

#include<stdio.h>

#include<string.h>

#include<math.h>

int convert(char hexa[])

{

int i,size, deci=0, octa=0;

for(size=0; hexa[size]!='\0'; size++);  //this loop calculates size of hexadecimal number

for(i=0; hexa[i]!='\0'; i++,size--)

{

if(hexa[i]>='0' && hexa[i]<='9')

{

deci= deci + (hexa[i]-'0')*pow(16,size-1);

}

if(hexa[i]>='A' && hexa[i]<='F')

{

deci = deci + (hexa[i]-55)*pow(16,size-1);

}

if(hexa[i]>='a' && hexa[i]<='f')

{

deci = deci + (hexa[i]-87)*pow(16,size-1);

}

} // deci contains the decimal value of given hexadecimal number.

i=1;

while(deci!=0)

{

octa = octa + (deci%8)*i;

deci = deci/8;

i = i*10;

}

return octa;

}

int main()

{

char hexa;

scanf("%s",hexa);

printf("Equivalent Octal Value = %d",convert(hexa));

return 0;

}``````

Related Posts:

Online Compilers