Tutorials
Examples
Tests

# C++ Program to Convert Hexadecimal to Octal

In this article, you will learn and get code on hexadecimal to octal conversion in C++. The program is created with and without using function.

Before going through the program, if you're not aware about the simple steps and formula used for the conversion, then you can refer to hexadecimal to octal steps, formula to get every required things.

## Hexadecimal to Octal in C++

To convert hexadecimal number to octal number in C++ programming, you have to ask from user to enter the hexadecimal number first. And then convert it into its equivalent octal value. Print its equivalent octal value as shown in the program given below:

```#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int decimalNum=0, octalNum, rem, i=0, len=0;
char hexDecNum;
cin>>hexDecNum;
while(hexDecNum[i]!='\0')
{
len++;
i++;
}
len--;
i=0;
while(len>=0)
{
rem = hexDecNum[len];
if(rem>=48 && rem<=57)
rem = rem-48;
else if(rem>=65 && rem<=70)
rem = rem-55;
else if(rem>=97 && rem<=102)
rem = rem-87;
else
{
cout<<"\nInvalid Hex Digit!";
cout<<endl;
return 0;
}
decimalNum = decimalNum + (rem*pow(16, i));
len--;
i++;
}
i=0;
while(decimalNum != 0)
{
octalNum[i] = decimalNum%8;
i++;
decimalNum = decimalNum/8;
}
cout<<"\nEquivalent Octal Value: ";
for(i=(i-1); i>=0; i--)
cout<<octalNum[i];
cout<<endl;
return 0;
}```

This program was build and run under Code::Blocks IDE. Here is its sample run:

Now supply the hexadecimal number input say 4CA and press `ENTER` key to convert and prints its equivalent octal value as shown in the output given below:

Here is another sample run with an invalid hexadecimal input say 4RT:

Note - There is no direct conversion from hexadecimal to octal. So you can either prefer hexadecimal to decimal, then decimal to octal or hexadecimal to binary, then binary to octal.

The above program first converts hexadecimal number to its decimal equivalent, and then decimal equivalent gets converted into its octal equivalent. Therefore indirectly, the hexadecimal number (entered by user) gets converted into its octal equivalent.

To learn about the working of above program like how the program works or how its dry run goes, then you can refer to its separate article.

### Using user-defined Function

Let's modify the above program and create using a user-defined function HexDecToOct(). The function takes hexadecimal number as its argument, and returns 0, if an invalid hex (hexadecimal) character found, or returns its octal equivalent.

```#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int HexDecToOct(char []);
int main()
{
char hexDecNum, octNum;
cin>>hexDecNum;
octNum = HexDecToOct(hexDecNum);
if(octNum==0)
cout<<"\nInvalid Hex Digit!";
else
cout<<"\nEquivalent Octal Value: "<<HexDecToOct(hexDecNum);
cout<<endl;
return 0;
}
int HexDecToOct(char hexDecNum[])
{
int i, len=0, decNum=0, octNum=0;
len = strlen(hexDecNum);
len--;
for(i=0; hexDecNum[i]!='\0'; i++, len--)
{
if(hexDecNum[i]>='0' && hexDecNum[i]<='9')
decNum = decNum + (hexDecNum[i]-48)*pow(16,len);
else if(hexDecNum[i]>='A' && hexDecNum[i]<='F')
decNum = decNum + (hexDecNum[i]-55)*pow(16,len);
else if(hexDecNum[i]>='a' && hexDecNum[i]<='f')
decNum = decNum + (hexDecNum[i]-87)*pow(16,len);
else
return 0;
}
i=1;
while(decNum!=0)
{
octNum = octNum + (decNum%8)*i;
i = i*10;
decNum = decNum/8;
}
return octNum;
}```

This program produces the same output as of previous program.

#### Same Program in Other Languages

C++ Online Test

« Previous Program Next Program »