Поделиться через


Функция RtlUnicodeStringToInteger (wdm.h)

Подпрограмма RtlUnicodeStringToInteger преобразует строковое представление числа в Юникоде в эквивалентное целочисленное значение.

Синтаксис

NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
  [in]           PCUNICODE_STRING String,
  [in, optional] ULONG            Base,
  [out]          PULONG           Value
);

Параметры

[in] String

Указатель на структуру UNICODE_STRING , содержащую числовое представление для преобразования в эквивалентное целочисленное значение.

[in, optional] Base

Числовое значение, указывающее основание (или радикс) числа, представляемого строкой Юникода. Это значение параметра является необязательным и может быть равно нулю.

Если значение Base равно нулю, RtlUnicodeStringToInteger проверяет префикс строки Юникода, чтобы определить основание числа:

  • Если префикс имеет значение "0x", RtlUnicodeStringToInteger интерпретирует число в строке как шестнадцатеричное целое число.

  • Если префикс имеет значение "0o", RtlUnicodeStringToInteger интерпретирует число в строке как восьмеричное целое число.

  • Если префикс имеет значение "0b", RtlUnicodeStringToInteger интерпретирует число в строке как двоичное целое число.

Если строка Юникода не содержит ни одного из этих префиксов, RtlUnicodeStringToInteger обрабатывает строку как целое число base-10.

[out] Value

Указатель на переменную ULONG, в которую RtlUnicodeStringToInteger записывает целочисленное значение, полученное в результате преобразования строки Юникода.

Возвращаемое значение

Если преобразование выполнено успешно, подпрограмма RtlUnicodeStringToInteger возвращает STATUS_SUCCESS и присваивает параметру *Value целочисленное значение, представленное числом в строке Юникода. Если строка не пуста, но не начинается с допустимого числа, подпрограмма возвращает STATUS_SUCCESS и устанавливает значение *Value равным нулю. Если строка пуста, подпрограмма завершается сбоем и возвращает STATUS_INVALID_PARAMETER.

Комментарии

Эта подпрограмма пропускает пробелы в начале входной строки, чтобы найти начало числа.

Если первый символ, отличный от пробела, в строке является дефисом (-), целочисленное значение, записанное в *Value , является отрицательным; В противном случае, если первый символ — "+" или знак отсутствует, целочисленное значение, записанное в параметр *Value , является положительным.

Если строка не содержит допустимого числа или первая цифра в строке предшествует символу, отличному от "+" или "-", то подпрограмма задает для выходного значения ноль и возвращает STATUS_SUCCESS.

Подстрока, содержащая одну или несколько допустимых цифр, завершается любым символом, который не является допустимой цифрой. Например, если Base = 2, допустимыми цифрами являются "0" и "1". Если base = 8, допустимые цифры от "0" до "7". Если base = 10, допустимые цифры от "0" до "9". Если Base = 16, допустимые цифры: от 0 до 9, от a до f и от A до F.

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

Входная строка Основной Выходное значение
"123" 10 123
"-345" 10 -345
"xyz" 10 0
"+678abc" 10 678
"+678abc" 16 6785724
"007" 10 7
"789" 8 7
"FGH" 16 15
" " 10 0

Связанная подпрограмма RtlIntegerToUnicodeString преобразует целочисленное значение в эквивалентное строковое представление в Юникоде.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
Библиотека NtosKrnl.lib (режим ядра); Ntdll.lib (пользовательский режим)
DLL NtosKrnl.exe (режим ядра); Ntdll.dll (пользовательский режим)
IRQL PASSIVE_LEVEL

См. также раздел

RtlIntegerToUnicodeString

UNICODE_STRING