Write a C program to input hexadecimal number from user and convert it to Decimal number system. How to convert from Hexadecimal number system to Decimal number system in C programming. Logic to convert hexadecimal to decimal number system in C programming.
Example
Input
Input hexadecimal: 1A
Output
Decimal number: 26
Required knowledge
Basic C programming, If else, For loop, String
Hexadecimal number system
Hexadecimal number system is a base 16 number system. It uses 16 symbols to represent all number i.e. 0123456789ABCDEF
Decimal number system
Decimal number system is a base 10 number system. It uses 10 symbols to represent all numbers i.e. 0123456789
Logic to convert Hexadecimal to Decimal
Step by step descriptive logic to convert hexadecimal to decimal number system.
- Input a hexadecimal number from user. Store it in some variable hex.
- Initialize
decimal = 0
,digit = length_of_hexadecimal_digit - 1
andi = 0
. - Run a loop for each hex digit. Which is the loop structure should look like
for(i=0; hex[i]!='\0'; i++)
. - Inside the loop find the integer value of hex[i]. Store it in some variable say val.
- Convert the hex to decimal using
decimal = decimal + (val * 16 ^ digit)
. Whereval = hex[i]
.
Program to convert hexadecimal to decimal number system
/**
* C program to convert Hexadecimal to Decimal number system
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char hex[17];
long long decimal, place;
int i = 0, val, len;
decimal = 0;
place = 1;
/* Input hexadecimal number from user */
printf("Enter any hexadecimal number: ");
gets(hex);
/* Find the length of total number of hex digit */
len = strlen(hex);
len--;
/*
* Iterate over each hex digit
*/
for(i=0; hex[i]!='\0'; i++)
{
/* Find the decimal representation of hex[i] */
if(hex[i]>='0' && hex[i]<='9')
{
val = hex[i] - 48;
}
else if(hex[i]>='a' && hex[i]<='f')
{
val = hex[i] - 97 + 10;
}
else if(hex[i]>='A' && hex[i]<='F')
{
val = hex[i] - 65 + 10;
}
decimal += val * pow(16, len);
len--;
}
printf("Hexadecimal number = %s\n", hex);
printf("Decimal number = %lld", decimal);
return 0;
}
Output
Enter any hexadecimal number: 1a Hexadecimal number = 1a Decimal number = 26
Happy coding 😉
Recommended posts
- Loop programming exercises and solutions in C.
- C program to convert Decimal to Hexadecimal number system.
- C program to convert Hexadecimal to Binary number system.
- C program to convert Hexadecimal to Octal number system.
- C program to convert Binary to Decimal number system.
- C program to convert Octal to Decimal number system.