Condividi tramite


Funzione RtlUnicodeStringToInteger (wdm.h)

La routine RtlUnicodeStringToInteger converte una rappresentazione di stringa Unicode di un numero nel valore intero equivalente.

Sintassi

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

Parametri

[in] String

Puntatore a una struttura UNICODE_STRING che contiene la rappresentazione numerica da convertire nel valore intero equivalente.

[in, optional] Base

Valore numerico che indica la base (o il numero radix) del numero rappresentato dalla stringa Unicode. Questo valore di parametro è facoltativo e può essere impostato su zero.

Se Base è zero, RtlUnicodeStringToInteger controlla il prefisso della stringa Unicode per determinare la base del numero:

  • Se il prefisso è "0x", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero esadecimale.

  • Se il prefisso è "0o", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero ottale.

  • Se il prefisso è "0b", RtlUnicodeStringToInteger interpreta il numero nella stringa come intero binario.

Se la stringa Unicode non contiene alcuno di questi prefissi, RtlUnicodeStringToInteger considera la stringa come integer base-10.

[out] Value

Puntatore a una variabile ULONG in cui RtlUnicodeStringToInteger scrive il valore intero risultante dalla conversione della stringa Unicode.

Valore restituito

Se la conversione ha esito positivo, la routine RtlUnicodeStringToInteger restituisce STATUS_SUCCESS e imposta *Value sul valore intero rappresentato dal numero nella stringa Unicode. Se la stringa non è vuota, ma non inizia con una rappresentazione numerica valida, la routine restituisce STATUS_SUCCESS e imposta *Value su zero. Se la stringa è vuota, la routine ha esito negativo e restituisce STATUS_INVALID_PARAMETER.

Commenti

Questa routine ignora gli spazi vuoti all'inizio della stringa di input per trovare l'inizio del numero.

Se il primo carattere non vuoto nella stringa è un trattino (-), il valore intero scritto in *Value è negativo; in caso contrario, se il primo carattere è "+" o non è presente alcun carattere di segno, il valore intero scritto in *Value è positivo.

Se la stringa non contiene un numero valido o se la prima cifra della stringa è preceduta da un carattere di spazio non vuoto diverso da '+' o '-', la routine imposta il valore di output su zero e restituisce STATUS_SUCCESS.

Una sottostringa che contiene una o più cifre valide viene terminata da qualsiasi carattere che non sia una cifra valida. Ad esempio, se Base = 2, le cifre valide sono '0' e '1'. Se Base = 8, le cifre valide sono da '0' a '7'. Se Base = 10, le cifre valide sono da '0' a '9'. Se Base = 16, le cifre valide sono da '0' a '9', 'a' a 'f' e 'A' a 'F'.

La tabella seguente contiene esempi di valori di output risultanti da varie combinazioni di stringhe di input e valori dei parametri di base .

Stringa di input Base Valore di output
"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

Una routine correlata , RtlIntegerToUnicodeString, converte un valore intero nella rappresentazione di stringa Unicode equivalente.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
Libreria NtosKrnl.lib (modalità kernel); Ntdll.lib (modalità utente)
DLL NtosKrnl.exe (modalità kernel); Ntdll.dll (modalità utente)
IRQL PASSIVE_LEVEL

Vedi anche

RtlIntegerToUnicodeString

UNICODE_STRING