2

如果我有一个非托管指针,并且我想将指定数量的字节从该位置传输到 Byte 数组,那么最好的方法是什么?

即什么是 Marshal.PtrToString* 方法的等价物,但目标是 Byte()

谢谢

4

2 回答 2

2

Marshal.Copy具有用于将字节数组复制到/从指针的重载。

这是与VB6Byte()风格的 COM 互操作吗?您为什么要使用 OLE-COM 查看器(包含在随 VS 安装的 Windows SDK 工具中)检查底层 COM 类型以打开 VB 创建的 dll 以查看其类型库所说的内容。

于 2009-02-25T12:06:41.767 回答
0

试试下面的代码

public static byte[] PtrToByteArray(IntPtr ptr, int len) {
  var array = new byte[len];
  for ( int i = 0; i < len; i++ ) { 
    array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
    ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
  }
}
于 2009-02-25T12:10:01.557 回答