 GeeksforGeeks App
Open App Browser
Continue

# Different Ways to Convert Hex String to Integer in C++ STL

A hexadecimal number is a number whose base is 16. has numerals 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, and 15. And 10, 11, 12, 13, 14, and 15 these numbers are denoted by A, B, C, D, E, F. In C++ STL there are certain properties that help to convert a hexadecimal string or number to a decimal number easily.

There are 5 different ways to convert a Hex string to an Integer in C++:

1. Using stoi() function
2. Using sscanf() function
3. Using stoul() function
4. Using string stream method
5. Using boost:lexical_cast function

Let’s start discussing each of these methods in detail.

## 1. Using C++ STL stoi() function

stoi() is an STL function in c++ that is used to convert any number(binary, octal, hexadecimal) to an unsigned integer in a specified base. It is defined in the <string> header file. It contains three parameters:

• First is the string name, which means the string that you want to convert into decimal.
• Second is an index number, by default, it’s 0, or you can initialize it with nullptr.
• The last one is the base of the input string. It is also an optional parameter. By default, it’s 10.

This function returns an integer value of the given hex string.

Syntax:

int stoi (const string&  str, [size_t* idx], [int base]);

Below is the C++ program to implement stoi() function to convert a hex string to an integer:

## C++

 `// C++ program to implement stoi()``// function to convert a hex string``// to an integer``#include ``#include ` `using` `namespace` `std;` `// Driver code``int` `main()``{``  ``// Input string``  ``string s = ``"DD"``;` `  ``// Initializing the return integer``  ``// value of the function to a new``  ``// variable``  ``int` `ans = stoi(s, 0, 16);` `  ``cout << ans << endl;``  ``return` `0;``}`

Output

`221`

## 2. Using C++ STL sscanf() function

sscanf function is basically used to read the data from a string buffer.

Syntax:

int sscanf( const char* buffer, const char* format,….);

Here the buffer is a pointer to a null-terminated character string to read the data and the format pointer to a null-terminated character string specifies how to read the data, and lastly, we will add one more parameter to where to store the value.

Below is the C++ program to convert a hex string to an integer using sscanf() function:

## C++

 `// C++ program to convert a hex``// string to an integer using``// sscanf() function``#include ``using` `namespace` `std;` `// Driver code``int` `main()``{``  ``string s = ``"DD"``;``  ``int` `ans;``  ` `  ``// Converting a hexadecimal C-string``  ``// to an integer using the format %x``  ``// and storing it into ans variable``  ``sscanf``(s.c_str(), ``"%x"``, &ans);``  ``cout << ans << endl;``  ``return` `0;``}`

Output

`221`

## 3. Using C++ STL stoul() function

This is an STL function in C++11 that is defined in the header file <string>, which is also used to convert a string to an integer.

Syntax:

stoul (const string&  str, size_t* idx, int base);

Parameters:

• str: Input string, with the representation of an integral number.
• idx: Pointer to an object of type size_t, whose value is set by 0. It can also be null pointer, in which case it is not used.
• base: Numerical base(radix) that determines the valid characters and their interpretation. Here it will be 16, as it’s a hexadecimal string.

Below is the C++ program to convert a hex string to an Integer using stoul() function:

## C++

 `// C++ program to convert a hex string``// to an Integer using stoul() function``#include``using` `namespace` `std;` `// Driver code``int` `main()``{``  ``string s = ``"DD"``;``      ` `  ``// Converting a hexadecimal string``  ``// to an integer``  ``// Initializing the return integer``  ``// value of the function to a``  ``// new variable``  ``int` `i = stoul(s, 0, 16);``  ` `  ``cout << i << endl;   ``  ``return` `0;``}`

Output

`221`

## 4. Using C++ STL string stream method

When the base field format is set to hex, the integer values of that hex value are stored in the stream. It is done by using a hex manipulator.

Below is the C++ program to implement stringstream method to convert a hex string to an integer:

## C++

 `// C++ program to implement``// stringstream method to``// convert a hex string to``// an integer``#include ``using` `namespace` `std;` `// Driver code``int` `main()``{``  ``string s = ``"DD"``;``  ``int` `i;` `  ``// Used for breaking words``  ``istringstream iss(s);` `  ``// Converting to integer and``  ``// storing it to i``  ``iss >> hex >> i;` `  ``cout << i << endl;` `  ``return` `0;``}`

Output

`221`

## 5. Using C++ STL boost:lexical_cast function

In c++ STL there is a function called a boost, which can be used to convert a hex string to an integer. It first streams the string and then it converts it to an integer with boost::lexical_cast<int>.

Below is the C++ program to implement boost:lexical_cast function to convert a hex string to an integer:

## C++

 `// C++ program to implement``// boost:lexical_cast function``// to convert a hex string to``// an integer:``#include ``#include ``#include ``using` `namespace` `std;`` ` `// Driver code``int` `main()``{``  ``string s = ``"DD"``;``      ` `  ``// Converting the string to integer``  ``int` `i = boost::lexical_cast<``int``>(s);``  ``cout << i << endl;``  ``return` `0;``}`

Output:

`221`

My Personal Notes arrow_drop_up