RtlUnicodeStringToInteger 函数 (wdm.h)
RtlUnicodeStringToInteger 例程将数字的 Unicode 字符串表示形式转换为等效的整数值。
语法
NTSYSAPI NTSTATUS RtlUnicodeStringToInteger(
[in] PCUNICODE_STRING String,
[in, optional] ULONG Base,
[out] PULONG Value
);
参数
[in] String
指向 UNICODE_STRING 结构的指针,该结构包含要转换为等效整数值的数字表示形式。
[in, optional] Base
一个数值,指示 Unicode 字符串表示的数字的基 (或基数) 。 此参数值是可选的,可以设置为零。
如果 Base 为零, 则 RtlUnicodeStringToInteger 检查 Unicode 字符串的前缀以确定数字的基数:
如果前缀为“0x”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为十六进制整数。
如果前缀为“0o”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为八进制整数。
如果前缀为“0b”, 则 RtlUnicodeStringToInteger 会将字符串中的数字解释为二进制整数。
如果 Unicode 字符串不包含这些前缀中的任何一个, 则 RtlUnicodeStringToInteger 会将该字符串视为以 10 为底的整数。
[out] Value
指向 ULONG 变量的指针, RtlUnicodeStringToInteger 将 Unicode 字符串转换产生的整数值写入该变量。
返回值
如果转换成功, 则 RtlUnicodeStringToInteger 例程返回STATUS_SUCCESS并将 *Value 设置为由 Unicode 字符串中的数字表示的整数值。 如果字符串不为空,但不以有效的数字表示形式开头,则例程返回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 将整数值转换为等效的 Unicode 字符串表示形式。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h) |
Library | NtosKrnl.lib (内核模式) ;Ntdll.lib (用户模式) |
DLL | NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式) |
IRQL | PASSIVE_LEVEL |