C++ Program to Convert Hexadecimal to Binary

In this article, you will learn and get code on hexadecimal to binary conversion in C++. But if you're not aware about simple steps and formula used for the conversion, then you can refer to hexadecimal to binary to get every required things.

Hexadecimal to Binary in C++

To convert hexadecimal number to binary number in C++ programming, you have to ask from user user to enter the hexadecimal number first. And then convert it into its equivalent binary value and print the equivalent binary value as output.

You can create the program in two ways:

  • Either directly print the equivalent 4-bit binary value of each and every hexadecimal digit (hex digit) one by one, using switch case
  • Or use strcat() function, to concatenate each and every 4-bit binary equivalent of hex digit(s) in a variable say binaryNum[], and then print the value of binaryNum[] at last. That is, first convert, then print

Print Binary Equivalent of Hexadecimal Input

This program uses switch case to match and print binary equivalent of each and every hex digit.

#include<iostream>
using namespace std;
int main()
{
    int i=0;
    char hexDecNum[10];
    cout<<"Enter the Hexadecimal Number: ";
    cin>>hexDecNum;
    cout<<"\nEquivalent Binary Value = ";
    while(hexDecNum[i])
    {
        switch(hexDecNum[i])
        {
            case '0':
                cout<<"0000";
                break;
            case '1':
                cout<<"0001";
                break;
            case '2':
                cout<<"0010";
                break;
            case '3':
                cout<<"0011";
                break;
            case '4':
                cout<<"0100";
                break;
            case '5':
                cout<<"0101";
                break;
            case '6':
                cout<<"0110";
                break;
            case '7':
                cout<<"0111";
                break;
            case '8':
                cout<<"1000";
                break;
            case '9':
                cout<<"1001";
                break;
            case 'A':
            case 'a':
                cout<<"1010";
                break;
            case 'B':
            case 'b':
                cout<<"1011";
                break;
            case 'C':
            case 'c':
                cout<<"1100";
                break;
            case 'D':
            case 'd':
                cout<<"1101";
                break;
            case 'E':
            case 'e':
                cout<<"1110";
                break;
            case 'F':
            case 'f':
                cout<<"1111";
                break;
            default:
                cout<<"--Invalid Hex Digit ("<<hexDecNum[i]<<")--";
        }
        i++;
    }
    cout<<endl;
    return 0;
}

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

C++ program convert hexadecimal to binary

Now supply hexadecimal number input say 2AD3 and press ENTER key to print its equivalent binary value as shown in the output given below:

hexadecimal to binary c++

The dry run of above program with hexadecimal input say 2AD3 goes like:

  • Initial value, i=0
  • When user enters hexadecimal number say 2AD3, then it gets initialized to hexDecNum in a way that:
    • hexDecNum[0]=2
    • hexDecNum[1]=A
    • hexDecNum[2]=D
    • hexDecNum[3]=3
  • Now the condition of while loop gets evaluated. That is, the condition hexDecNum[i] or hexDecNum[0] evaluates to be true, because there is a value 2 is available at hexDecNum[0]
  • Because the condition evaluates to be true, therefore program flow goes inside the loop and using switch, the character gets matched with all the 15 cases
  • That is, checks whether the character present at hexDecNum[i] or hexDecNum[0] is equal to any of the 15 character cases such as 0, 1, 2, ...., A, a, B, ..., f or not
  • If it equals to any of the 15 characters, then print its equivalent 4-bit binary value. Otherwise the default case gets executed
  • Now the value of i gets incremented and program flow goes back and evaluates the condition of while loop again
  • When the value of i becomes equal to 4, then the condition hexDecNum[4] evaluates to be false, because at 4th index, no any further character is available, rather a null terminated character (\0) is available at fourth index.
  • On continuing the process, we'll get the binary equivalent of 2AD3 hexadecimal input as 0010101011010011. Where 2=0010, A=1010, D=1101, and 3=0011

What if User enters an Invalid Hexadecimal digit ?

In a case, if user enters an invalid hexadecimal digit. For example, if user enters hexadecimal input in following ways (containing one or more invalid hex digit, with or without valid ones):

  • Z - One invalid hexadecimal digit
  • 2DZSA - An invalid hexadecimal digit, in between valid ones
  • TR - Two invalid hexadecimal digit

In all the three cases, if the program (created above) found any hexadecimal digit (without caring where and how it presents), a message --Invalid Hex Digit (HexDigit)-- gets printed in a way that:

  • For first case
    --Invalid Hex Digit (Z)--
    gets printed
  • For second case
    00101101--Invalid Hex Digit (Z)----Invalid Hex Digit (S)--1010
    gets printed. Where 0010 and 1101 are the hexadecimal values of 2 and D. And at last 1010 is the hexadecimal value of A
  • For third case
    --Invalid Hex Digit (T)----Invalid Hex Digit (S)--
    gets printed

Here is the sample output for second case:

c++ hexadecimal to binary

Note - Above program doesn't convert given hexadecimal number into its equivalent binary value. Rather it just prints the binary equivalent using switch case.

Now let's create another program that actually converts the number from hexadecimal to binary.

Convert Hexadecimal to Binary

This program uses strcat() function to concatenate the binary equivalent of each and every hexadecimal digit (hex digit) one by one to a variable say binaryNum[]. And finally prints its value as output.

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    int i=0, chk=0;
    char hexDecNum[10], binaryNum[40]="";
    cout<<"Enter the Hexadecimal Number: ";
    cin>>hexDecNum;
    while(hexDecNum[i])
    {
        switch(hexDecNum[i])
        {
            case '0':
                strcat(binaryNum, "0000");
                break;
            case '1':
                strcat(binaryNum, "0001");
                break;
            case '2':
                strcat(binaryNum, "0010");
                break;
            case '3':
                strcat(binaryNum, "0011");
                break;
            case '4':
                strcat(binaryNum, "0100");
                break;
            case '5':
                strcat(binaryNum, "0101");
                break;
            case '6':
                strcat(binaryNum, "0110");
                break;
            case '7':
                strcat(binaryNum, "0111");
                break;
            case '8':
                strcat(binaryNum, "1000");
                break;
            case '9':
                strcat(binaryNum, "1001");
                break;
            case 'A':
            case 'a':
                strcat(binaryNum, "1010");
                break;
            case 'B':
            case 'b':
                strcat(binaryNum, "1011");
                break;
            case 'C':
            case 'c':
                strcat(binaryNum, "1100");
                break;
            case 'D':
            case 'd':
                strcat(binaryNum, "1101");
                break;
            case 'E':
            case 'e':
                strcat(binaryNum, "1110");
                break;
            case 'F':
            case 'f':
                strcat(binaryNum, "1111");
                break;
            default:
                chk = 1;
                break;
        }
        i++;
    }
    if(chk==0)
        cout<<"\nEquivalent Binary Value: "<<binaryNum;
    else
        cout<<"\nInvalid Hexadecimal Digit";
    cout<<endl;
    return 0;
}

Here is its sample run with hexadecimal number input as AabB:

hexadecimal to binary conversion c++

Same Program in Other Languages

C++ Online Test


« Previous Program Next Program »