调用C++中的dll文件带指针如何处理

flame100 2011-11-18 12:55:08
C++中的函数:unsigned char __stdcall RegRead(unsigned char* data);data为传出数据的首地址(实用4byte),从网上获得的资料是用StringBuilder替代,即:private static extern byte RegRead(StringBuilder d);我这样试了,运行是可以的,但我怎样把d数据再转换成byte[]数据呢?谢谢!分数不多见谅
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
niaoked 2011-11-18
  • 打赏
  • 举报
回复
System.Text.Encoding.ASCII.GetBytes(d);
这个是ASCII编码,如果是其它编码对应换一下就可以了
flame100 2011-11-18
  • 打赏
  • 举报
回复
谢谢各位的帮忙,nrylovecjb的方法可以用。
sdl2005lyx 2011-11-18
  • 打赏
  • 举报
回复
改成这样:

[DllImport("xxx.dll", EntryPoint = "RegRead")]
public static extern byte RegRead(IntPtr d);

使用:
IntPtr ptr=new IntPtr();
byte len=RegRead(ptr);

byte[] bytes = new byte[size];
Marshal.Copy(ptr, bytes, 0, size);
nrylovecjb 2011-11-18
  • 打赏
  • 举报
回复

byte[] byteSb = System.Text.Encoding.UTF8.GetBytes(d.ToString());
dataexcel 2011-11-18
  • 打赏
  • 举报
回复
直接传byte[]就可以了。
fix(byte * pbt=byts[][0])
{
byte *p =pbt;
传p就可以了。
byte[]的值会自动改变。
}
flame100 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 niaoked 的回复:]

System.Text.Encoding.ASCII.GetBytes(d);
这个是ASCII编码,如果是其它编码对应换一下就可以了
[/Quote]

能帮我具体点吗?我要获得byte[]数组数据,数据类型是hex,谢谢!

110,545

社区成员

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

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

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