asp.net中c# byte[] 转换为 IntPtr几种方法
来源:互联网 发布:在线考试源码js 编辑:程序博客网 时间:2024/06/05 19:31
有几种方法可以访问与字节数组相对应的 IntPtr。
第一种,使用不安全的代码块来访问直接指向字节数组的指针。
代码如下复制代码unsafe
{
byte[] test = new byte[5];
fixed (byte* p = &test[0])
{
*p = 0xff;
}
}
第二种,可以使用 GCHandle 来获得对象。
using System.Runtime.InteropServices;
byte[] test = new byte[5];
GCHandle hObject = GCHandle.Alloc(test, GCHandleType.Pinned);
IntPtr pObject = hObject.AddrOfPinnedObject();
if(hObject.IsAllocated)
hObject.Free();
第三种, 通过 LocalAlloc 创建内存块并将数据封送处理到该内存块。
代码如下复制代码
[DllImport("coredll.dll",SetLastError=true)]
public static extern IntPtr LocalAlloc(uint uFlags, uint uBytes);
[DllImport("coredll.dll",SetLastError=true)]
public static extern IntPtr LocalFree(IntPtr hMem);
[DllImport("coredll.dll",SetLastError=true)]
public static extern IntPtr LocalReAlloc(IntPtr hMem, uint uBytes, uint fuFlags);
public const uint LMEM_FIXED = 0;
public const uint LMEM_MOVEABLE = 2;
public const uint LMEM_ZEROINIT = 0x0040;
byte[] test = new byte[5];
IntPtr p = LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, (uint)test.Length);
if (p == IntPtr.Zero)
{
throw new OutOfMemoryException();
}
else
{
Marshal.Copy(test, 0, p, test.Length);
}
- asp.net中c# byte[] 转换为 IntPtr几种方法
- c# byte[] 转换为 IntPtr几种方法
- 将IntPtr转化为byte[]
- asp.net中string和byte[]转换
- (转)C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- ASP.NET 将文件转换为byte数组
- 在C#中如何使用BYTE[]转换为String
- C#中IntPtr的使用
- C#中string转换成字节byte的处理方法
- 从图像转换到byte[]数组的几种方法
- 从图像转换到byte[]数组的几种方法
- asp.net中时间格式化的几种方法
- ASP.NET中页面传值的几种方法
- asp.net中时间格式化的几种方法
- ASP.NET中页面传值的几种方法
- ASP.NET 中得到网站绝对路径的几种方法
- ASP.NET 中得到网站绝对路径的几种方法
- MKNetworkKit入门和简单使用及其源码实例分析
- 白盒测试之语句覆盖
- 娜姐退役信(英文)
- Windows Server 2008 中的服务器安全策略管理
- A quick message queue benchmark: ActiveMQ, RabbitMQ, HornetQ, QPID, Apollo
- asp.net中c# byte[] 转换为 IntPtr几种方法
- int数组默认初始化值
- js写基本的时钟
- 逗比请来的猴子
- Linux下的串口编程(二)
- 【Axure教程】详解格式设置
- Java调用Python(2.7.x)的简单示例
- 关于用spring的JtaTransactionManager,配置分布式事务
- NDIS