C++ Program For Hexadecimal To Decimal Conversion
Last Updated :
22 Aug, 2023
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:
C++ Program to Convert Hexadecimal Number to Decimal Number
C++
#include <bits/stdc++.h>
using namespace std;
int hexadecimalToDecimal(string hexVal)
{
int len = hexVal.size();
int base = 1;
int dec_val = 0;
for ( int i = len - 1; i >= 0; i--) {
if (hexVal[i] >= '0' && hexVal[i] <= '9' ) {
dec_val += ( int (hexVal[i]) - 48) * base;
base = base * 16;
}
else if (hexVal[i] >= 'A' && hexVal[i] <= 'F' ) {
dec_val += ( int (hexVal[i]) - 55) * base;
base = base * 16;
}
}
return dec_val;
}
int main()
{
string hexNum = "1A" ;
cout << (hexadecimalToDecimal(hexNum));
return 0;
}
|
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
Share your thoughts in the comments
Please Login to comment...