C# 怎么实现C++的memcpy函数,求高手帮忙

maliang13567 2013-06-18 03:03:31
C#winform调用了一个C++的ocx控件,控件的事件原型是OnSeries(LPCTSTR strDevNum, unsigned char* strSeriesData, LPCTSTR strSize),用事件处理时要读取内存数据,C++的实现方法如下。
unsigned char str[1400] = {0};
int nSize = atoi(strSize);
memcpy(str, strSeriesData, nSize);
在C#中调用该事件时事件的三个参数变成了(string strDevNum, byte,strSeriesData string strSize)
我用C#怎么去实现读取内存操作。
...全文
1502 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
津濑美 2016-01-27
  • 打赏
  • 举报
回复
引用 7 楼 wyd1520 的回复:
System.Buffer.BlockCopy
这个真好啊,真好啊,速度超快
vingsa8352 2013-06-19
  • 打赏
  • 举报
回复
unsigned char str[1400] = {0}; int nSize = atoi(strSize); memcpy(str, strSeriesData, nSize); 你是要把这段代码变成C#还是不知道C#怎么调用C++
maliang13567 2013-06-19
  • 打赏
  • 举报
回复
引用 8 楼 caozhy 的回复:
Marshal.Copy http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.marshal.copy.aspx
这个方法用过了可是获取的结果和原来的函数不同。
maliang13567 2013-06-19
  • 打赏
  • 举报
回复
引用 6 楼 vingsa8352 的回复:
指针也可以当数组用,当然C++里面要分配好空间,C++ char是一个字节,正好对应c#byte
我该怎么用知道的三个参数获取我想要的数据呢?
maliang13567 2013-06-19
  • 打赏
  • 举报
回复
引用 11 楼 vingsa8352 的回复:
unsigned char str[1400] = {0}; int nSize = atoi(strSize); memcpy(str, strSeriesData, nSize); 你是要把这段代码变成C#还是不知道C#怎么调用C++
不这段代码换成C#
threenewbee 2013-06-18
  • 打赏
  • 举报
回复
Marshal.Copy http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.marshal.copy.aspx
本拉灯 2013-06-18
  • 打赏
  • 举报
回复
System.Buffer.BlockCopy
vingsa8352 2013-06-18
  • 打赏
  • 举报
回复
指针也可以当数组用,当然C++里面要分配好空间,C++ char是一个字节,正好对应c#byte
maliang13567 2013-06-18
  • 打赏
  • 举报
回复
引用 4 楼 vingsa8352 的回复:
byte[] strSeriesData不是原数组吗
他不是数组,只是一个字节数,在C++中是一个指针。在C#中我不知道该怎么用了。
vingsa8352 2013-06-18
  • 打赏
  • 举报
回复
byte[] strSeriesData不是原数组吗
maliang13567 2013-06-18
  • 打赏
  • 举报
回复
引用 1 楼 vingsa8352 的回复:
写个函数好了 public void mem_copy(byte[] dst, int dst_offst, byte[] src, int src_offst, int len) { for(int i = 0; i < len; i++) { dst[dst_offst++] = src[src_offst++]; } }
我都不知道原数组是什么样的。
  • 打赏
  • 举报
回复
Array.Copy()
vingsa8352 2013-06-18
  • 打赏
  • 举报
回复
写个函数好了 public void mem_copy(byte[] dst, int dst_offst, byte[] src, int src_offst, int len) { for(int i = 0; i < len; i++) { dst[dst_offst++] = src[src_offst++]; } }

111,092

社区成员

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

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

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