专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VC

怎么把非托管char*数组 转换为 托管的Byte[]数组

发布时间:2011-06-23 14:24:07 文章来源:www.iduyao.cn 采编人员:星星草
如何把非托管char*数组 转换为 托管的Byte[]数组?
Byte[]数组和array<unsigned char>^是同类型。

用System::Runtime::InteropServices::Marshal类,有PtrToStructure、PtrToStringAnsi等方法,就是没有转换为托管字节数组的方法,请问怎么解决?  


如果先转换为字符串,再转换为字节数组,显得太繁琐了

------解决方案--------------------
网上找的,参考:
C# code
           //将非托管的ANSI字符串转换成托管字符串 
String^ UnmanagedStringA2ManagedString(char* pIn)
{
return Marshal::PtrToStringAnsi(static_cast<IntPtr>(pIn));
}

//将托管字符串转换成非托管的ANSI字符串 
char* ManagedString2UnmanagedStringA(String^ strIn)
{
IntPtr ip = Marshal::StringToHGlobalAnsi(strIn);
const char* pTemp = static_cast<const char*>(ip.ToPointer());
char *pOut = new char[strlen(pTemp)+1];
strcpy(pOut, pTemp);
Marshal::FreeHGlobal(ip);
return pOut;
}

------解决方案--------------------
用这个Intprt作为参数,之后转换为byte[].
转换方法:
用Unsafe,指针操作;
或用Marshal.Copy
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: