在C#中,IntPtr
和string
之間的轉換可以通過使用Marshal
類來實現
IntPtr
轉換為string
:using System;
using System.Runtime.InteropServices;
class Program
{
static void Main()
{
IntPtr intPtr = /* 獲取一個有效的IntPtr */;
string str = Marshal.PtrToStringAnsi(intPtr);
Console.WriteLine("Converted string: " + str);
}
}
這里使用了Marshal.PtrToStringAnsi()
方法,它將一個指向以null結尾的ANSI字符串的IntPtr
轉換為string
。如果你的字符串是Unicode編碼的,可以使用Marshal.PtrToStringUni()
方法。
string
轉換為IntPtr
:using System;
using System.Runtime.InteropServices;
class Program
{
static void Main()
{
string str = "Hello, World!";
IntPtr intPtr = Marshal.StringToHGlobalAnsi(str);
// 使用intPtr...
// 最后釋放內存
Marshal.FreeHGlobal(intPtr);
}
}
這里使用了Marshal.StringToHGlobalAnsi()
方法,它將一個string
轉換為一個指向以null結尾的ANSI字符串的IntPtr
。如果你需要將字符串轉換為Unicode編碼,可以使用Marshal.StringToHGlobalUni()
方法。在使用完IntPtr
后,記得調用Marshal.FreeHGlobal()
方法釋放內存。