Open In App

C++ Program For Hexadecimal To Decimal Conversion

Last Updated : 22 Aug, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

The hexadecimal numbers are base 16 numbers that use 16 symbols {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} to represent all digits. Here, (A, B, C, D, E, F) represents (10, 11, 12, 13, 14, 15). Decimal numbers are base 10 numbers with 10 symbols to represent all digits.

In this article, we will learn to write a program in C++ to convert the hexadecimal number into an equivalent decimal number.

Algorithm

  • Initialize a variable dec_value with 0 to store the decimal value.
  • Traverse the hexadecimal string from right to left and check,
    • If the current character is a number 0-9, convert it to its corresponding integer by subtracting ‘0’ from its ASCII value.
    • If the character is a letter from ‘A’ to ‘F’, convert it to its corresponding integer by subtracting ‘A’ from its ASCII value and adding 10 to it.
  • Multiply each digit of the hexadecimal number with the proper base (Power of 16) and add it to the variable dec_value.
  • Update the base value in each iteration by multiplying it by 16.
  • After traversing all the digits of the hexadecimal number, the variable dec_value will store the equivalent decimal number.

The below diagram explains how to convert a hexadecimal number (1AB) to an equivalent decimal value:  

hexadecimal to decimal conversion in C++

C++ Program to Convert Hexadecimal Number to Decimal Number

C++




// C++ program to convert hexadecimal
// to decimal
#include <bits/stdc++.h>
using namespace std;
  
// Function to convert hexadecimal
// to decimal
int hexadecimalToDecimal(string hexVal)
{
    int len = hexVal.size();
  
    // Initializing base value to 1,
    // i.e 16^0
    int base = 1;
  
    int dec_val = 0;
  
    // Extracting characters as digits
    // from last character
    for (int i = len - 1; i >= 0; i--) {
        // If character lies in '0'-'9',
        // converting it to integral 0-9
        // by subtracting 48 from ASCII value
        if (hexVal[i] >= '0' && hexVal[i] <= '9') {
            dec_val += (int(hexVal[i]) - 48) * base;
  
            // incrementing base by power
            base = base * 16;
        }
  
        // If character lies in 'A'-'F' , converting
        // it to integral 10 - 15 by subtracting 55
        // from ASCII value
        else if (hexVal[i] >= 'A' && hexVal[i] <= 'F') {
            dec_val += (int(hexVal[i]) - 55) * base;
  
            // Incrementing base by power
            base = base * 16;
        }
    }
    return dec_val;
}
  
// Driver code
int main()
{
    string hexNum = "1A";
    cout << (hexadecimalToDecimal(hexNum));
  
    return 0;
}


Output

26

Complexity Analysis

  • Time complexity: O(len), where len is the length of the string
  • Auxiliary space: O(len)

Please refer complete article on Program for Hexadecimal to Decimal for more details!



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads