如果我有一个非托管指针,并且我想将指定数量的字节从该位置传输到Byte数组,那么最好的方法是什么?
即。什么是Marshal.PtrToString *方法的等价物,但目的地是Byte()
由于
答案 0 :(得分:2)
Marshal.Copy
有重载字节数组到/从指针复制。
由Byte()
与VB6风格的COM互操作?您为什么要使用OLE-COM查看器(包含在随VS安装的Windows SDK工具中)检查基础COM类型,以打开VB创建的dll以查看其类型库说明。
答案 1 :(得分: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);
}
}