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
유니코드 문자열이 나타내는 숫자의 기준(또는 radix)을 나타내는 숫자 값입니다. 이 매개 변수 값은 선택 사항이며 0으로 설정할 수 있습니다.
Base가 0이면 RtlUnicodeStringToInteger는 유니코드 문자열의 접두사를 검사하여 숫자의 기반을 확인합니다.
접두사 "0x"인 경우 RtlUnicodeStringToInteger 는 문자열의 숫자를 16진수 정수로 해석합니다.
접두사 "0o"이면 RtlUnicodeStringToInteger 는 문자열의 숫자를 8진수 정수로 해석합니다.
접두사 "0b"이면 RtlUnicodeStringToInteger 는 문자열의 숫자를 이진 정수로 해석합니다.
유니코드 문자열에 이러한 접두사를 포함하지 않으면 RtlUnicodeStringToInteger 는 문자열을 base-10 정수로 처리합니다.
[out] Value
RtlUnicodeStringToInteger가 유니코드 문자열 변환으로 인한 정수 값을 쓰는 ULONG 변수에 대한 포인터입니다.
반환 값
변환에 성공하면 RtlUnicodeStringToInteger 루틴은 STATUS_SUCCESS 반환하고 *Value 를 유니코드 문자열의 숫자로 표현되는 정수 값으로 설정합니다. 문자열이 비어 있지 않지만 유효한 숫자 표현으로 시작하지 않으면 루틴은 STATUS_SUCCESS 반환하고 *Value 를 0으로 설정합니다. 문자열이 비어 있으면 루틴이 실패하고 STATUS_INVALID_PARAMETER 반환합니다.
설명
이 루틴은 입력 문자열의 시작 부분에 있는 공백을 건너뛰어 숫자의 시작을 찾습니다.
문자열의 공백이 아닌 첫 번째 문자가 하이픈(-)인 경우 *Value 에 기록된 정수 값은 음수입니다. 그렇지 않으면 첫 번째 문자가 "+"이거나 부호 문자가 없는 경우 *Value 에 기록된 정수 값은 양수입니다.
문자열에 유효한 숫자가 없거나 문자열의 첫 번째 숫자가 '+' 또는 '-' 이외의 공백이 아닌 문자 앞에 오는 경우 루틴은 출력 값을 0으로 설정하고 STATUS_SUCCESS 반환합니다.
유효한 숫자가 하나 이상 포함된 부분 문자열은 유효한 숫자가 아닌 문자에 의해 종료됩니다. 예를 들어 Base = 2인 경우 유효한 숫자는 '0' 및 '1'입니다. Base = 8이면 유효한 숫자는 '0'에서 '7'입니다. Base = 10이면 유효한 숫자는 '0'에서 '9'입니다. Base = 16인 경우 유효한 숫자는 '0'에서 '9', 'a'에서 'f'로, 'A'에서 'F'로 지정됩니다.
다음 표에는 입력 문자열과 Base 매개 변수 값의 다양한 조합으로 인해 발생하는 출력 값의 예가 포함되어 있습니다.
입력 문자열 | 기준 | 출력 값 |
---|---|---|
"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 |