如何将“System.IntPtr”转换为“float[]”

本文关键字:float 转换 IntPtr System | 更新日期: 2023-09-27 18:35:36

我怎样才能获得这个IntPtrfloat[],以便我可以对其进行操作?或者请让我知道任何方法都可以操作。(我尝试过使用数组、封送处理,但全部无法运行。请参阅以下内容。

任何帮助将不胜感激!

IntPtr pt = IntPtr.Zero;
Camera.Memory.ToIntPtr(s32MemID, out pt);
MIL.MbufPut(MilImage, pt); 

> C:'Ctest'idsCS'idsCS'Form1.cs(100,35): error CS1503: Argument '2': cannot convert from 'System.IntPtr' to 'float[]'

这些方法的语法

uEye.Memory.ToIntPtr(out System.IntPtr ptr)
**uEye.Memory.ToIntPtr**(int s32MemId, out System.IntPtr ptr)

描述
返回指向活动/给定图像内存 ID 的图像内存的指针。

参数

s32MemId(Image memory ID)
ptr(Pointer to the image memory)
  void **MbufPut**(
  MIL_ID DestBufId,  //in  
const void *UserArrayPtr  //in  
)

如何将“System.IntPtr”转换为“float[]”

使用 Marshal.Copy (此重载: http://msdn.microsoft.com/en-us/library/a53bd6cz(v=vs.80).aspx )

如今,我会使用 Span

IntPtr ptr = ... ;
Span<T> sp = new Span<T>((T*)ptr, ...);

但这仍然有一些局限性。考虑到 Span 是只读结构,只能在堆栈上分配。