C#中IntPtr與String的轉(zhuǎn)換方法

c#
小樊
83
2024-09-08 03:21:11

在C#中,IntPtrstring之間的轉(zhuǎn)換可以通過(guò)使用Marshal類(lèi)來(lái)實(shí)現(xiàn)

  1. IntPtr轉(zhuǎn)換為string
using System;
using System.Runtime.InteropServices;

class Program
{
    static void Main()
    {
        IntPtr intPtr = /* 獲取一個(gè)有效的IntPtr */;
        string str = Marshal.PtrToStringAnsi(intPtr);
        Console.WriteLine("Converted string: " + str);
    }
}

這里使用了Marshal.PtrToStringAnsi()方法,它將一個(gè)指向以null結(jié)尾的ANSI字符串的IntPtr轉(zhuǎn)換為string。如果你的字符串是Unicode編碼的,可以使用Marshal.PtrToStringUni()方法。

  1. string轉(zhuǎn)換為IntPtr
using System;
using System.Runtime.InteropServices;

class Program
{
    static void Main()
    {
        string str = "Hello, World!";
        IntPtr intPtr = Marshal.StringToHGlobalAnsi(str);
        // 使用intPtr...
        // 最后釋放內(nèi)存
        Marshal.FreeHGlobal(intPtr);
    }
}

這里使用了Marshal.StringToHGlobalAnsi()方法,它將一個(gè)string轉(zhuǎn)換為一個(gè)指向以null結(jié)尾的ANSI字符串的IntPtr。如果你需要將字符串轉(zhuǎn)換為Unicode編碼,可以使用Marshal.StringToHGlobalUni()方法。在使用完IntPtr后,記得調(diào)用Marshal.FreeHGlobal()方法釋放內(nèi)存。

0