当前位置: 代码迷 >> VC >> 怎么把非托管char*数组 转换为 托管的Byte[]数组
  详细解决方案

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

热度:9899   发布时间:2013-02-25 00:00:00.0
如何把非托管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
  相关解决方案