Функция 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 |