Javascript required
Skip to content Skip to sidebar Skip to footer

How to Convert Hexadecimal to Binary in C

Program to Convert Hexadecimal Number to Binary

Given a Hexadecimal number as an input, the task is to convert that number to a Binary number.
Examples:

Input: Hexadecimal = 1AC5 Output: Binary = 0001101011000101 Explanation:     Equivalent binary value of 1: 0001     Equivalent binary value of A: 1010     Equivalent binary value of C: 1100     Equivalent binary value of 5: 0101  Input: Hexadecimal = 5D1F Output: Binary = 0101110100011111

Approach: A hexadecimal number is a positional numeral system with a radix, or base, of 16 and uses sixteen distinct symbols.
A binary number is a number expressed in the base-2 binary numeral system, which uses only two symbols: which are 0 (zero) and 1 (one).

Attention reader! All those who say programming isn't for kids, just haven't met the right mentors yet. Join the Demo Class for First Step to Coding Course,specificallydesigned for students of class 8 to 12.

The students will get to learn more about the world of programming in thesefree classes which will definitely help them in making a wise career choice in the future.

To convert HexaDecimal number to Binary, the binary equivalent of each digit of the HexaDecimal number is evaluated and combined at the end to get the equivalent binary number.



Below is the implementation of the above approach:

C++

#include <bits/stdc++.h>

using namespace std;

void HexToBin(string hexdec)

{

long int i = 0;

while (hexdec[i]) {

switch (hexdec[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 << "\nInvalid hexadecimal digit "

<< hexdec[i];

}

i++;

}

}

int main()

{

char hexdec[100] = "1AC5" ;

cout << "\nEquivalent Binary value is : " ;

HexToBin(hexdec);

return 0;

}

C

#include <stdio.h>

void HexToBin( char * hexdec)

{

long int i = 0;

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

case 'a' :

printf ( "1010" );

break ;

case 'B' :

case 'b' :

printf ( "1011" );

break ;

case 'C' :

case 'c' :

printf ( "1100" );

break ;

case 'D' :

case 'd' :

printf ( "1101" );

break ;

case 'E' :

case 'e' :

printf ( "1110" );

break ;

case 'F' :

case 'f' :

printf ( "1111" );

break ;

default :

printf ( "\nInvalid hexadecimal digit %c" ,

hexdec[i]);

}

i++;

}

}

int main()

{

char hexdec[100] = "1AC5" ;

printf ( "\nEquivalent Binary value is : " );

HexToBin(hexdec);

}

Java

public class Improve {

static void HexToBin( char hexdec[])

{

int i = 0 ;

while (hexdec[i] != '\u0000' ) {

switch (hexdec[i]) {

case '0' :

System.out.print( "0000" );

break ;

case '1' :

System.out.print( "0001" );

break ;

case '2' :

System.out.print( "0010" );

break ;

case '3' :

System.out.print( "0011" );

break ;

case '4' :

System.out.print( "0100" );

break ;

case '5' :

System.out.print( "0101" );

break ;

case '6' :

System.out.print( "0110" );

break ;

case '7' :

System.out.print( "0111" );

break ;

case '8' :

System.out.print( "1000" );

break ;

case '9' :

System.out.print( "1001" );

break ;

case 'A' :

case 'a' :

System.out.print( "1010" );

break ;

case 'B' :

case 'b' :

System.out.print( "1011" );

break ;

case 'C' :

case 'c' :

System.out.print( "1100" );

break ;

case 'D' :

case 'd' :

System.out.print( "1101" );

break ;

case 'E' :

case 'e' :

System.out.print( "1110" );

break ;

case 'F' :

case 'f' :

System.out.print( "1111" );

break ;

default :

System.out.print( "\nInvalid hexadecimal digit " + hexdec[i]);

}

i++;

}

}

public static void main(String args[])

{

String s = "1AC5" ;

char hexdec[] = new char [ 100 ] ;

hexdec = s.toCharArray() ;

System.out.print( "\nEquivalent Binary value is : " );

try {

HexToBin(hexdec);

}

catch (ArrayIndexOutOfBoundsException e){

System.out.print( "" );

}

}

}

Python3

def HexToBin(hexdec):

for i in hexdec:

if i = = '0' :

print ( '0000' , end = '')

elif i = = '1' :

print ( '0001' , end = '')

elif i = = '2' :

print ( '0010' , end = '')

elif i = = '3' :

print ( '0011' , end = '')

elif i = = '4' :

print ( '0100' , end = '')

elif i = = '5' :

print ( '0101' , end = '')

elif i = = '6' :

print ( '0110' , end = '')

elif i = = '7' :

print ( '0111' , end = '')

elif i = = '8' :

print ( '1000' , end = '')

elif i = = '9' :

print ( '1001' , end = '')

elif i = = 'A' or i = = 'a' :

print ( '1010' , end = '')

elif i = = 'B' or i = = 'b' :

print ( '1011' , end = '')

elif i = = 'C' or i = = 'c' :

print ( '1100' , end = '')

elif i = = 'D' or i = = 'd' :

print ( '1101' , end = '')

elif i = = 'E' or i = = 'e' :

print ( '1110' , end = '')

elif i = = 'F' or i = = 'f' :

print ( '1111' , end = '')

else :

print ( "\nInvalid hexadecimal digit " +

str (hexdec[i]), end = '')

if __name__ = = "__main__" :

hexdec = "1AC5" ;

print ( "Equivalent Binary value is : " ,

end = '')

HexToBin(hexdec)

C#

class GFG

{

static void HexToBin( char [] hexdec)

{

int i = 0;

while (hexdec[i] != '\u0000' )

{

switch (hexdec[i])

{

case '0' :

System.Console.Write( "0000" );

break ;

case '1' :

System.Console.Write( "0001" );

break ;

case '2' :

System.Console.Write( "0010" );

break ;

case '3' :

System.Console.Write( "0011" );

break ;

case '4' :

System.Console.Write( "0100" );

break ;

case '5' :

System.Console.Write( "0101" );

break ;

case '6' :

System.Console.Write( "0110" );

break ;

case '7' :

System.Console.Write( "0111" );

break ;

case '8' :

System.Console.Write( "1000" );

break ;

case '9' :

System.Console.Write( "1001" );

break ;

case 'A' :

case 'a' :

System.Console.Write( "1010" );

break ;

case 'B' :

case 'b' :

System.Console.Write( "1011" );

break ;

case 'C' :

case 'c' :

System.Console.Write( "1100" );

break ;

case 'D' :

case 'd' :

System.Console.Write( "1101" );

break ;

case 'E' :

case 'e' :

System.Console.Write( "1110" );

break ;

case 'F' :

case 'f' :

System.Console.Write( "1111" );

break ;

default :

System.Console.Write( "\nInvalid hexadecimal digit " +

hexdec[i]);

break ;

}

i++;

}

}

static void Main()

{

string s = "1AC5" ;

char [] hexdec = new char [100];

hexdec = s.ToCharArray();

System.Console.Write( "Equivalent Binary value is : " );

try

{

HexToBin(hexdec);

}

catch (System.IndexOutOfRangeException)

{

System.Console.Write( "" );

}

}

}

PHP

<?php

function HexToBin( $hexdec )

{

$i = 0;

while ( $hexdec [ $i ])

{

switch ( $hexdec [ $i ])

{

case '0' :

echo "0000" ;

break ;

case '1' :

echo "0001" ;

break ;

case '2' :

echo "0010" ;

break ;

case '3' :

echo "0011" ;

break ;

case '4' :

echo "0100" ;

break ;

case '5' :

echo "0101" ;

break ;

case '6' :

echo "0110" ;

break ;

case '7' :

echo "0111" ;

break ;

case '8' :

echo "1000" ;

break ;

case '9' :

echo "1001" ;

break ;

case 'A' :

case 'a' :

echo "1010" ;

break ;

case 'B' :

case 'b' :

echo "1011" ;

break ;

case 'C' :

case 'c' :

echo "1100" ;

break ;

case 'D' :

case 'd' :

echo "1101" ;

break ;

case 'E' :

case 'e' :

echo "1110" ;

break ;

case 'F' :

case 'f' :

echo "1111" ;

break ;

default :

echo "\nInvalid hexadecimal digit " .

$hexdec [ $i ];

}

$i ++;

}

}

$hexdec = "1AC5" ;

echo "\nEquivalent Binary value is : " ;

HexToBin( $hexdec );

Output:

Equivalent Binary value is : 0001101011000101

Alternate Approach :

Python

def to4DigitBin(value):

return '0' * ( 4 - len (value)) + value

def HexadecimalToBinary(inputHexadecimal):

resultBinary = ''

for eachElement in inputHexadecimal:

if (eachElement.isdigit()):

binaryOfSingleDigit = bin ( int (eachElement))[ 2 :]

resultBinary + = to4DigitBin(binaryOfSingleDigit)

elif (eachElement.isalpha() and ord (eachElement) < 71 ):

resultBinary + = to4DigitBin( bin ( ord (eachElement) - 55 )[ 2 :])

else :

resultBinary = 'Invalid hexadecimal digit: ' + eachElement

break

return 'Equivalent Binary value is: ' + resultBinary

inputHexadecimal = '1AC5'

print (HexadecimalToBinary(inputHexadecimal))

Java

import java.io.*;

class HexToBinary {

public static void main(String[] args)

{

String s = "1AC5" ;

String result = hexToBinary(s);

System.out.println(result);

}

private static String hexToBinary(String input)

{

int decimalValue = Integer.parseInt(input, 16 );

String result

= Integer.toBinaryString(decimalValue);

return result;

}

}

Output

Equivalent Binary value is: 0001101011000101            

How to Convert Hexadecimal to Binary in C

Source: https://www.geeksforgeeks.org/program-to-convert-hexadecimal-number-to-binary/