Hexadecimal to Decimal Conversion in C++
Hexadecimal to Decimal Conversion
Hexadecimal to Decimal conversion is the process of converting a hexadecimal number (base-16) into its equivalent decimal number (base-10). Each hexadecimal digit represents a power of 16.
For example, the hexadecimal number 1F is equal to decimal 31 because:
(1 × 16¹) + (F × 16⁰) = 16 + 15 = 31
We will explore three methods to convert a hexadecimal number to a decimal number using C++ programming.
Method 1: Using Loop
We extract each digit of the hexadecimal number, multiply it by the corresponding power of 16, and sum the results.
#include#include #include using namespace std; int hexToDecimal(string hex) { int decimal = 0, base = 1; for (int i = hex.length() - 1; i >= 0; i--) { char digit = hex[i]; int value = (digit >= '0' && digit <= '9') ? digit - '0' : digit - 'A' + 10; decimal += value * base; base *= 16; } return decimal; } int main() { string hex; cout << "Enter a hexadecimal number: "; cin >> hex; cout << "Decimal equivalent: " << hexToDecimal(hex) << endl; return 0; }
Output:
Enter a hexadecimal number: 1F Decimal equivalent: 31
Method 2: Using Built-in Function
We can use C++'s stoi() function with a base of 16 to directly convert a hexadecimal number to a decimal number.
#include#include using namespace std; int main() { string hex; cout << "Enter a hexadecimal number: "; cin >> hex; int decimal = stoi(hex, nullptr, 16); cout << "Decimal equivalent: " << decimal << endl; return 0; }
Output:
Enter a hexadecimal number: 1F Decimal equivalent: 31
Method 3: Using Recursion
We recursively extract each digit and multiply it by the corresponding power of 16.
#include#include #include using namespace std; int hexToDecimalRecursive(string hex, int length, int index) { if (index == length) return 0; char digit = hex[index]; int value = (digit >= '0' && digit <= '9') ? digit - '0' : digit - 'A' + 10; return value * pow(16, length - index - 1) + hexToDecimalRecursive(hex, length, index + 1); } int main() { string hex; cout << "Enter a hexadecimal number: "; cin >> hex; cout << "Decimal equivalent: " << hexToDecimalRecursive(hex, hex.length(), 0) << endl; return 0; }
Output:
Enter a hexadecimal number: 1F Decimal equivalent: 31