当前位置:编程学习 > C#/ASP.NET >>

C# 如何将char * 指向的内如取出

如:我有一个结构体,里面有一个char* 指向数据的地址,并且有一个nDataLength的变量表示数据长度

问题:我如何取出char* 中的数据到一个Byte[]中? --------------------编程问答-------------------- char**相当于字符串数组。
char*相当于字符串。
你可以用string接受,并且用ToCharArray()装入数组。 --------------------编程问答-------------------- 用string 接收后的发现这个值一直都是"",所以改为了char* ,然后想从指定的地址开始读长度的数据 --------------------编程问答-------------------- 试试            StringBuilder
--------------------编程问答--------------------
引用 2 楼 yelangFeb 的回复:
用string 接收后的发现这个值一直都是"",所以改为了char* ,然后想从指定的地址开始读长度的数据


不会吧,你好好看看你的C程序吧,是不是平栈了,用string接受应该是没有任何问题的,还有,你的char*里面有数据?直接用Marshal.Copy就行了吧 --------------------编程问答-------------------- 1、c/c++中的char不同于c#中的char;
2、办法一,循环赋值,根据数据长度循环将指针数据赋值到byte[]各元素;
3、办法二,将char*强制转换为IntPtr,使用Marshal.Copy将IntPtr指向的数据拷贝到byte[];
4、办法三,如果是从c编写的api中获取数据,并且api参数为一个指针,dll向指针写入数据,那么可以尝试直接使用固定后的byte[]作为参数传入api,或者获取byte[]的fixed指针作为参数传入api,使dll直接将数据写入byte[],省掉一次拷贝。
5、结构体也好,结构体中有指针也好,将一个结构体作为一个数组也好,其实都是数据内存分布的表现形式,不用拘泥于一一对应,可以传送并在传送后转为需要的形式即可。 --------------------编程问答-------------------- 试试            StringBuilder 是可以的
--------------------编程问答-------------------- char *pData;
IntPtr data = new IntPtr(pData);
byte[] buff = new byte[nDataLength];
Marshal.Copy(data, buff, 0, nDataLength); --------------------编程问答-------------------- stringbuiler 
再不行IntPtr
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,