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 會將字串視為 base-10 整數。

[out] Value

RtlUnicodeStringToInteger 所產生之 ULONG 變數的指標會寫入從 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 字串表示。

規格需求

需求
目標平台 Universal
標頭 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