C# IntPtr转byte数组、byte[]转Intptr、IntPtr转换为raw数据、Marshal.Copy方法
作者:野牛程序员:2023-12-25 12:09:37C#阅读 2711
C# IntPtr转byte数组、byte[]转Intptr、IntPtr转换为raw数据、Marshal.Copy方法
使用Marshal.Copy
方法可以在C#中进行IntPtr
和字节数组之间的转换。以下是一些示例代码:
IntPtr转byte数组:
IntPtr intptrValue = /* Your IntPtr value */; int arraySize = /* Size of the array */; byte[] byteArray = new byte[arraySize]; Marshal.Copy(intptrValue, byteArray, 0, arraySize);
byte数组转IntPtr:
byte[] byteArray = /* Your byte array */; IntPtr intptrValue = Marshal.AllocHGlobal(byteArray.Length); Marshal.Copy(byteArray, 0, intptrValue, byteArray.Length);
IntPtr转换为原始数据:
IntPtr intptrValue = /* Your IntPtr value */; int intValue = Marshal.ReadInt32(intptrValue); // Assuming it's a 32-bit integer, adjust for other types
请注意,在使用Marshal.AllocHGlobal
为IntPtr
分配内存时,需要确保在不再需要该内存时调用Marshal.FreeHGlobal
来释放它,以防止内存泄漏。
这些示例代码假设知道要转换的数据的大小和类型。如果有关数据类型的更多信息,请相应地调整代码。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892