C program to convert hexadecimal to decimal

Posted on 06th January 2016

This is a C program that converts a hexadecimal number to its equivalent decimal number. Apart from the standard C library for I/O functions, the stdio.h, this program also requires the header math.h which contains several mathematical functions such as pow(a,b) that returns the value for a to the power of b.

The conversion method used in this program is to multiply each numeral by 16 to the power of that numeral's position and take the sum. For example hexadecimal 2A is converted to decimal as illustrated below.

Power of 16161160
Decimal = Σ2 * 16110 * 160
Decimal = 42

The program prompts the user to input a hexadecimal number. The input is validated by checking if the characters are either 0-9 or A-F. Any other character if entered will be ignored by the program.

The program also converts the characters from ASCII to its decimal value.

Program Source Code

/* **********************************************
 * C program to convert Hexadecimal to Decimal	*

#include <stdio.h>
#include <math.h>

int main() 
 int hex[20], dec, i, j, ch, p;
 i = 0;

 // Read a Hexadecimal value
 printf("Enter a Hexadecimal value : ");
 while ((ch=getchar()) != '\n') {
	 if ((ch > 47 && ch < 58) || (ch > 64 && ch < 71))
		 hex[i++] = ch;

   // Convert Hexadecimal to Decimal
 for (j = i-1; j >= 0; j-- ) {
	 if (hex[j] > 57)
		 dec +=  (hex[j] - 55) * (int)pow((double)16, p);
		 dec +=  (hex[j] - 48) * (int)pow((double)16, p);

 // Print the hexadecimal value
printf("Decimal value is : %d",dec);

 //Wait for key press
 printf("\n\nPress any key to continue...");
 return 0;

Sample Output

Enter a Hexadecimal value : 2A
Decimal value is : 42

Press any key to continue...

Post a comment


Nothing yet..be the first to share wisdom.