Различные способы преобразования шестнадцатеричной строки в целое число в C++ STL

Опубликовано: 28 Января, 2023

Шестнадцатеричное число — это число, основание которого равно 16. Имеет цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 и 15. И 10, 11. , 12, 13, 14 и 15 эти числа обозначаются буквами A, B, C, D, E, F. В C++ STL есть определенные свойства, которые помогают легко преобразовать шестнадцатеричную строку или число в десятичное число.

Существует 5 различных способов преобразования шестнадцатеричной строки в целое число в C++:

  1. Использование функции стои()
  2. Использование функции sscanf()
  3. Использование функции stoul()
  4. Использование метода строкового потока
  5. Использование функции boost:lexical_cast

Давайте начнем подробно обсуждать каждый из этих методов.

1. Использование функции C++ STL stoi()

stoi() — это функция STL в С++, которая используется для преобразования любого числа (двоичного, восьмеричного, шестнадцатеричного) в целое число без знака в указанном основании. Он определен в заголовочном файле <string>. Он содержит три параметра:

  • Во-первых, это имя строки, которое означает строку, которую вы хотите преобразовать в десятичную.
  • Второй — это порядковый номер, по умолчанию он равен 0, или вы можете инициализировать его с помощью nullptr.
  • Последний является основой входной строки. Это также необязательный параметр. По умолчанию это 10.

Эта функция возвращает целочисленное значение данной шестнадцатеричной строки.

Синтаксис:

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

Ниже приведена программа C++ для реализации функции stoi() для преобразования шестнадцатеричной строки в целое число:

2. Использование функции C++ STL sscanf()

Функция sscanf в основном используется для чтения данных из строкового буфера.

Синтаксис:

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

Здесь буфер представляет собой указатель на строку символов с нулевым символом в конце для чтения данных, а указатель формата на строку символов с нулевым символом в конце указывает, как читать данные, и, наконец, мы добавим еще один параметр, где хранить значение .

Ниже приведена программа C++ для преобразования шестнадцатеричной строки в целое число с помощью функции sscanf():

3. Использование функции C++ STL stoul()

Это функция STL в C++11, определенная в заголовочном файле <string>, которая также используется для преобразования строки в целое число.

Синтаксис:

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

Параметры:

  • str: Входная строка с представлением целого числа.
  • idx: Указатель на объект типа size_t, значение которого равно 0. Это также может быть нулевой указатель, в этом случае он не используется.
  • база: Числовая база (основание), которая определяет допустимые символы и их интерпретацию. Здесь будет 16, так как это шестнадцатеричная строка.

Ниже приведена программа C++ для преобразования шестнадцатеричной строки в целое число с помощью функции stoul():

4. Использование метода строкового потока C++ STL

Когда базовый формат поля установлен в шестнадцатеричный, целые значения этого шестнадцатеричного значения сохраняются в потоке. Это делается с помощью шестигранного манипулятора.

Ниже приведена программа C++ для реализации метода stringstream для преобразования шестнадцатеричной строки в целое число:

5. Использование функции C++ STL boost:lexical_cast

В C++ STL есть функция boost, которую можно использовать для преобразования шестнадцатеричной строки в целое число. Сначала он передает строку, а затем преобразует ее в целое число с помощью boost::lexical_cast<int>.

Ниже приведена программа C++ для реализации функции boost:lexical_cast для преобразования шестнадцатеричной строки в целое число:

Выход:

221