C program to convert hexadecimal number to decimal number system using for loop. Hexadecimal number system is a base 16 number system using digits 0 to 7 and A to F whereas Decimal number system is base 10 number system and using digits from 0 to 9. Given an hexadecimal number as input from user convert it to decimal number.
For Example:
12AD in Hexadecimal is equivalent to 4781 in Decimal number system.
Required Knowledge
Algorithm to convert Hexadecimal to Decimal number
Let's convert 12AD(hexadecimal number) to decimal number- Hexadecimal digits includes characters from A to F corresponding to 10 to 15 respectively. Hence, for hex digit form A to F we will use their decimal equivalent 10 to 15 form any calculation.
- We multiply each digit with 16i and add them, where i is the position of the Hexadecimal digit(starting from 0) from right side. Least significant digit is at position 0.
Decimal number = 1*163 + 2*162 + 10*161 + 13*160 = 4096 + 512 + 160 + 13 = 4781
C program to convert a hexadecimal number to decimal number
#include <stdio.h> #include <math.h> #include <string.h> int main() { long long decimalNumber=0; char hexDigits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; char hexadecimal[30]; int i, j, power=0, digit; printf("Enter a Hexadecimal Number\n"); scanf("%s", hexadecimal); /* Converting hexadecimal number to decimal number */ for(i=strlen(hexadecimal)-1; i >= 0; i--) { /*search currect character in hexDigits array */ for(j=0; j<16; j++){ if(hexadecimal[i] == hexDigits[j]){ decimalNumber += j*pow(16, power); } } power++; } printf("Decimal Number : %ld", decimalNumber); return 0; }Output
Enter a Hexadecimal Number 12AD Decimal Number : 4781
Enter a Hexadecimal Number 2045CA Decimal Number : 2115018
Related Topics