首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

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

2012-01-09 
如何把非托管char*数组 转换为 托管的Byte[]数组?Byte[]数组和arrayunsigned char^是同类型。用System::R

如何把非托管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

热点排行