字符串UNICODDE_STRING与整型数字相互转换
2022-09-13
32
0
/************************************************************************
* 函数名称:RtlUnicodeStringToInteger
* 功能描述:UNICODE_STRING字符串转化成整型数字
* 参数列表:
String:需要转化的字符串
Base:转换的数的进制(2,8,10,16)
Value:需要转换的数字
* 返回 值:指明是否转换成功
*************************************************************************/
NTSTATUS RtlUnicodeStringToInteger(
IN PUNICODE_STRING String,
IN ULONG Base OPTIONAL,
OUT PULONG Value);
/************************************************************************
* 函数名称:RtlIntegerToUnicodeString
* 功能描述:UNICODE_STRING字符串转化成整型数字
* 参数列表:
Value:需要转化的数字
Base:转换的数的进制(2,8,10,16)
String:需要转换的字符串
* 返回 值:指明是否转换成功
*************************************************************************/
NTSTATUS RtlIntegerToUnicodeString(
IN ULONG Value,
IN ULONG Base OPTIONAL,
OUT PUNICODE_STRING String);
字符串与整型数字相互转换的实例
//(1)字符串转换成数字
//初始化UnicodeString1
UNICODE_STRING UnicodeString1;
RtlInitUnicodeString(&UnicodeString1, L“-100”);
ULONG lNumber;
NTSTATUS nStatus = RtlUnicodeStringToInteger(&UnicodeString1, 10, &lNumber);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver To Integer successfullu!\n”));
KdPrint((“Result:%d\n”, lNumber));
}
else
{
KdPrint((“Conver to integer unsuccessfully!\n”));
}
//(2)数字转换成字符串
//初始化UnicodeString2
UNICODE_STRING UnicodeString2;
UnicodeString2.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);
UnicodeString2.MaximumLength = BUFFER_SIZE;
nStatus = RtlIntegerToUnicodeString(200, 10, &UnicodeString2);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver to string successfuall!\n”));
KdPrint((“Result:%wZ\n”, &UnicodeString2));
}
else
{
KdPrint((“Conver to string unsuccessfully!\n”));
}
//注销UniocdeString2
//注意:UnicodeString1不用销毁
RtlFreeUnicodeString(&UniocdeString2);