C Program to Convert Hexadecimal to Binary

In this article, you will learn and get code about the conversion of a given number from hexadecimal to binary.

But before going through the program, if you are not aware of

  • Hexadecimal Number
  • Binary Number
  • Hexadecimal to Binary Conversion Process

then refer to Hexadecimal to Binary conversion step by step process. Now let's move on to the program given below.

Hexadecimal to Binary in C

To convert hexadecimal number to binary number in C programming, you have to ask from user to enter the hexadecimal number to convert it into its equivalent binary number as shown in the program given below. The question is, write a program in C, that takes any number (in hexadecimal system) as input and convert it into its equivalent binary value. The answer to this question is:

#include<stdio.h>
#include<conio.h>
int main()
{
    int i=0;
    char hexdec[11];
    printf("Enter Hexadecimal Number: ");
    gets(hexdec);
    printf("\nEquivalent Binary Value = ");
    while(hexdec[i])
    {
        switch(hexdec[i])
        {
            case '0':
                printf("0000");
                break;
            case '1':
                printf("0001");
                break;
            case '2':
                printf("0010");
                break;
            case '3':
                printf("0011");
                break;
            case '4':
                printf("0100");
                break;
            case '5':
                printf("0101");
                break;
            case '6':
                printf("0110");
                break;
            case '7':
                printf("0111");
                break;
            case '8':
                printf("1000");
                break;
            case '9':
                printf("1001");
                break;
            case 'A':
                printf("1010");
                break;
            case 'a':
                printf("1010");
                break;
            case 'B':
                printf("1011");
                break;
            case 'b':
                printf("1011");
                break;
            case 'C':
                printf("1100");
                break;
            case 'c':
                printf("1100");
                break;
            case 'D':
                printf("1101");
                break;
            case 'd':
                printf("1101");
                break;
            case 'E':
                printf("1110");
                break;
            case 'e':
                printf("1110");
                break;
            case 'F':
                printf("1111");
                break;
            case 'f':
                printf("1111");
                break;
            default:
                printf("--Invalid Hex Digit (%c)--", hexdec[i]);
        }
        i++;
    }
    getch();
    return 0;
}

This program was compiled and executed in Code::Blocks IDE. Here is the sample run. This is the initial snapshot of sample run:

c program convert hexadecimal to binary

Now supply any value (in hexadecimal number system) say 2AD3 and press ENTER key to see equivalent value in binary number system as shown in the snapshot given below:

hexadecimal to binary conversion c

Program Explained

  • Declares a variable say i of int type
  • Initialized it with 0 as its initial value
  • Declares another variable of char type say hexdec
  • The maximum size of hexdec is defined as 11. That is, it can hold upto 10 characters. The last space is for null terminated character (\0)
  • Now get the value of hexadecimal number from user (at run-time) using gets() function
  • For example, let's suppose user enters 2AD3 as hexadecimal number. Then,
    • 2 stores at hexdec[0]
    • A stores at hexdec[1]
    • D stores at hexdec[2]
    • 3 stores at hexdec[3]
  • So here we have created a while loop that runs until the last character of given hexadecimal value
  • Inside the loop, we have used switch case to print binary value for each and every hexadecimal character one by one. That's it.

Hexadecimal to Binary in C using strcat() Function

Now let's create another program that uses string function, strcat() to concatenate the string. Let's have a look at the program given below:

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    int i=0, chk=0;
    char hexdec[11], binnum[40]="";
    printf("Enter Hexadecimal Number: ");
    gets(hexdec);
    while(hexdec[i])
    {
        switch(hexdec[i])
        {
            case '0':
                strcat(binnum, "0000");
                break;
            case '1':
                strcat(binnum, "0001");
                break;
            case '2':
                strcat(binnum, "0010");
                break;
            case '3':
                strcat(binnum, "0011");
                break;
            case '4':
                strcat(binnum, "0100");
                break;
            case '5':
                strcat(binnum, "0101");
                break;
            case '6':
                strcat(binnum, "0110");
                break;
            case '7':
                strcat(binnum, "0111");
                break;
            case '8':
                strcat(binnum, "1000");
                break;
            case '9':
                strcat(binnum, "1001");
                break;
            case 'A':
                strcat(binnum, "1010");
                break;
            case 'a':
                strcat(binnum, "1010");
                break;
            case 'B':
                strcat(binnum, "1011");
                break;
            case 'b':
                strcat(binnum, "1011");
                break;
            case 'C':
                strcat(binnum, "1100");
                break;
            case 'c':
                strcat(binnum, "1100");
                break;
            case 'D':
                strcat(binnum, "1101");
                break;
            case 'd':
                strcat(binnum, "1101");
                break;
            case 'E':
                strcat(binnum, "1110");
                break;
            case 'e':
                strcat(binnum, "1110");
                break;
            case 'F':
                strcat(binnum, "1111");
                break;
            case 'f':
                strcat(binnum, "1111");
                break;
            default:
                chk = 1;
                break;
        }
        i++;
    }
    if(chk==0)
        printf("\nEquivalent Binary Value = %s", binnum);
    else
        printf("\nInvalid Hexadecimal Character/Digit");
    getch();
    return 0;
}

Here is the first sample run when user enters any valid hexadecimal number say 1F. Then the output produced by above program will looks like:

c hexadecimal to binary program

And here is another sample run, when user enters any invalid hexadecimal digit say 1T. Then the output produced by above program will looks like:

hexadecimal to binary program c

Program Explained

  • Here binary equivalent of each and every hex digit gets concatenated one by one
  • And at last we have checked and printed equivalent binary value of given hexadecimal value
  • Here we have checked whether the value of chk contains its original value or not
  • If it contains its original value, that is 0, then the default statement of switch case never runs
  • It means that no any invalid hexadecimal character was entered by user
  • And if chk does not holds its original value after exiting from the while loop, then it means, the default statement gets executed at once
  • So an invalid hexadecimal character was entered by user
  • Therefore program prints a message as Invalid Hexadecimal Character/Digit as output

Same Program in Other Languages

C Online Test


« Previous Program Next Program »

Follow/Like Us on Facebook




Subscribe Us on YouTube