c#知道指针和大小以后怎么获取数组.

threadroc 2017-02-22 04:26:11
data 变参指针:返回图片的数据指针
size 变参指针:返回图片的数据长度
int GetBmp(out object data, out object size);
C#调用C++写的com组件.
上面这个方法返回了一个byte[]数组.
但是我不知道在C#应该怎么读取这个数组.
...全文
241 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2017-02-22
  • 打赏
  • 举报
回复
引用 4 楼 threadroc 的回复:
[quote=引用 1 楼 crystal_lz 的回复:] byte[] byData = new byte[(int)size]; Marshal.Copy((IntPtr)data,byData,0,(int)size); 我猜的
可以了.data是object类型,直接转IntPtr不行,但是把data转成int类型,再转IntPtr就可以了. 谢谢啦.[/quote] 其实你在C#里面函数签名可以直接写成 int GetBmp(out IntPtr data, out int size);
  • 打赏
  • 举报
回复
32位机器应该可以吧
threadroc 2017-02-22
  • 打赏
  • 举报
回复
引用 1 楼 crystal_lz 的回复:
byte[] byData = new byte[(int)size]; Marshal.Copy((IntPtr)data,byData,0,(int)size); 我猜的
可以了.data是object类型,直接转IntPtr不行,但是把data转成int类型,再转IntPtr就可以了. 谢谢啦.
threadroc 2017-02-22
  • 打赏
  • 举报
回复
引用 1 楼 crystal_lz 的回复:
byte[] byData = new byte[(int)size]; Marshal.Copy((IntPtr)data,byData,0,(int)size); 我猜的
报错指定的转换无效,data是个整数型,到了C#里好像,不能转IntPtr
threadroc 2017-02-22
  • 打赏
  • 举报
回复
引用 1 楼 crystal_lz 的回复:
byte[] byData = new byte[(int)size]; Marshal.Copy((IntPtr)data,byData,0,(int)size); 我猜的
我试过,貌似不行.
crystal_lz 2017-02-22
  • 打赏
  • 举报
回复
byte[] byData = new byte[(int)size]; Marshal.Copy((IntPtr)data,byData,0,(int)size); 我猜的

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧