C program to convert Hexadecimal to Decimal number system

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

Hexadecimal to decimal conversion

Step by step descriptive logic to convert hexadecimal to decimal number system.

  1. Input a hexadecimal number from user. Store it in some variable hex.
  2. Initialize decimal = 0, digit = length_of_hexadecimal_digit - 1 and i = 0.
  3. Run a loop for each hex digit. Which is the loop structure should look like for(i=0; hex[i]!='\0'; i++).
  4. Inside the loop find the integer value of hex[i]. Store it in some variable say val.
  5. Convert the hex to decimal using decimal = decimal + (val * 16 ^ digit). Where val = 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 😉