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