Binary To Hexadecimal Program In C


Implementation

Implementation of this algorithm is given below −

#include <stdio.h>


int string_length(char s[])
{
   int i=0;

   while(s[i]!='\0')
      i++;
      
return i;   
}

int binary2decimal(char n[])
{
   int i,decimal,mul=0;

   for(decimal=0,i=string_length(n)-1;i>=0;--i,++mul)
      decimal+=(n[i]-48)*(1<<mul);

   return decimal;
}

void printHexDigit(int d)
{
        if(d<10) printf("%d",d);
   else if(d==10) printf("A");
   else if(d==11) printf("B");
   else if(d==12) printf("C");
   else if(d==13) printf("D");
   else if(d==14) printf("E");
   else if(d==15) printf("F");
}

int main()
{
   char n[] = "10101";
   char temp[5];
   int i,j,d;
   

   printf("Hexa equivalent of %s is : ", n);
   
   for(i=j=0;i<string_length(n)%4;++i,++j)
      temp[j]=n[i];
      temp[j]='\0';
      
   d=binary2decimal(temp);
   if(d!=0) printHexDigit(d);
   
   while(n[i]!='\0')
   {
      for(j=0;j<4;++i,++j)
         temp[j]=n[i];
         temp[j]='\0';
         
      d=binary2decimal(temp);
      printHexDigit(d);
   }
return 0;
}

Output

Output of the program should be −

Hexa equivalent of 10101 is : 15
Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements