当前位置:首页C# > 正文

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和字节数组之间的转换。以下是一些示例代码:

  1. IntPtr转byte数组:

IntPtr intptrValue = /* Your IntPtr value */;
int arraySize = /* Size of the array */;
byte[] byteArray = new byte[arraySize];

Marshal.Copy(intptrValue, byteArray, 0, arraySize);
  1. byte数组转IntPtr:

byte[] byteArray = /* Your byte array */;
IntPtr intptrValue = Marshal.AllocHGlobal(byteArray.Length);

Marshal.Copy(byteArray, 0, intptrValue, byteArray.Length);
  1. IntPtr转换为原始数据:

IntPtr intptrValue = /* Your IntPtr value */;
int intValue = Marshal.ReadInt32(intptrValue); // Assuming it's a 32-bit integer, adjust for other types

请注意,在使用Marshal.AllocHGlobalIntPtr分配内存时,需要确保在不再需要该内存时调用Marshal.FreeHGlobal来释放它,以防止内存泄漏。

这些示例代码假设知道要转换的数据的大小和类型。如果有关数据类型的更多信息,请相应地调整代码。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击