小弟请教一下C#读取内存byte[]的问题

lovestarbao 2012-05-28 06:22:38
我写了一个DLL,获取一个网页的验证码然后保存在内存中.

然后通过c#调用获得这个验证码的内存地址和长度,

如何通过这个地址和长度获取到byte[]?
...全文
502 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinghe20 2012-05-28
  • 打赏
  • 举报
回复
不用谢。[Quote=引用 13 楼 的回复:]

引用 12 楼 的回复:

Marshal.ReadByte((DataAdd))返回的是一个byte型,而不是byte数组。

你看这样有没有用。
byte[] a=byte[DataLengh];
for(int i=0;i<DataLengh;i++)
{
byte[i]=Marshal.ReadByte(DataAdd,i);
}
引用 10 楼 的回复:

……
[/Quote]
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

Marshal.ReadByte((DataAdd))返回的是一个byte型,而不是byte数组。

你看这样有没有用。
byte[] a=byte[DataLengh];
for(int i=0;i<DataLengh;i++)
{
byte[i]=Marshal.ReadByte(DataAdd,i);
}
引用 10 楼 的回复:

GetImage(ref int ……
[/Quote]

这样确实可以取到byte[]. 谢谢您的帮助

jinghe20 2012-05-28
  • 打赏
  • 举报
回复
Marshal.ReadByte((DataAdd))返回的是一个byte型,而不是byte数组。

你看这样有没有用。
byte[] a=byte[DataLengh];
for(int i=0;i<DataLengh;i++)
{
byte[i]=Marshal.ReadByte(DataAdd,i);
}
[Quote=引用 10 楼 的回复:]

GetImage(ref int DataAdd,ref int DataLengh)
DataAdd:验证码存放的内存首地址.

DataLengh:数据长度.

我用Marshal.ReadByte((DataAdd))能获取byte[]的第一个字节,但是后面的长度就无法取到了.
[/Quote]
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
Marshal.ReadByte(DataAdd) 只能取出一个字节

我想要取出指定一部分内存长度中的内存数据.
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
GetImage(ref int DataAdd,ref int DataLengh)
DataAdd:验证码存放的内存首地址.

DataLengh:数据长度.

我用Marshal.ReadByte((DataAdd))能获取byte[]的第一个字节,但是后面的长度就无法取到了.
jinghe20 2012-05-28
  • 打赏
  • 举报
回复
C#没有指针的概念,只有引用。
引用类型也不需要加&
可以看一下那个DLL的方法定义么?
[Quote=引用 8 楼 的回复:]

引用 6 楼 的回复:

通过c#调用获得这个验证码的内存地址和长度 ???

如果只为了取验证码的BYTE很简单,因为验证码是生成一串字符,System.Text.Encoding.Default.GetBytes()可以得到结果。

我现在还是看不明白验证码的内存地址是什么东东。


也就是说 通过内存指针和长度 取出这一片内存中的数据并转化为byte[]
[/Quote]
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

通过c#调用获得这个验证码的内存地址和长度 ???

如果只为了取验证码的BYTE很简单,因为验证码是生成一串字符,System.Text.Encoding.Default.GetBytes()可以得到结果。

我现在还是看不明白验证码的内存地址是什么东东。
[/Quote]

也就是说 通过内存指针和长度 取出这一片内存中的数据并转化为byte[]
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

通过c#调用获得这个验证码的内存地址和长度 ???

如果只为了取验证码的BYTE很简单,因为验证码是生成一串字符,System.Text.Encoding.Default.GetBytes()可以得到结果。

我现在还是看不明白验证码的内存地址是什么东东。
[/Quote]

可能是我说的不够详细,

因为我是通用调用dll的一个方法获取到 存放 这个验证码的 内存地址 和 内存长度

我的提问的问题是,如何通过取出这一片内存中存放的数据并转化为byte[]?

jinghe20 2012-05-28
  • 打赏
  • 举报
回复
通过c#调用获得这个验证码的内存地址和长度 ???

如果只为了取验证码的BYTE很简单,因为验证码是生成一串字符,System.Text.Encoding.Default.GetBytes()可以得到结果。

我现在还是看不明白验证码的内存地址是什么东东。
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用楼主 的回复:
我写了一个DLL,获取一个网页的验证码然后保存在内存中.


C++的DLL?
[/Quote]

只是一个举例, 因为dll无法返回byte[]类型的值 所以我采用的是返回内存地址和内存长度,但是怎么用C#通过内存地址取回这个byte[]的值,我却是不知道,望帮助!
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用楼主 的回复:
我写了一个DLL,获取一个网页的验证码然后保存在内存中.


C++的DLL?
[/Quote]

只是一个举例, 因为dll无法返回byte[]类型的值 所以我采用的是返回内存地址和内存长度,但是怎么用C#通过内存地址取回这个byte[]的值,我却是不知道,望帮助!
宝_爸 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我写了一个DLL,获取一个网页的验证码然后保存在内存中.
[/Quote]

C++的DLL?
YapingXin 2012-05-28
  • 打赏
  • 举报
回复
得用Marsh
lovestarbao 2012-05-28
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20120430/00/3E858C2C-04AB-4593-9635-BD6ABE64ED65.html

小弟的另外一个帖子,对于新手,一些问题真的能难很多天.

111,126

社区成员

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

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

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