我需要帮助才能进行此类转换:
byte* bytes = Battle::Storm::GetBytes(0);
现在我收到了错误:
错误3错误C2440:'初始化':无法从'cli :: array ^'转换为'byte *'
我该怎么做?
答案 0 :(得分:15)
从错误消息我明白Battle::Storm::GetBytes(0);
返回一个多维数组,其形式为cli::array<Byte,dimension> ^
将其转换为原生unsigned char*
array<Byte,N> ^ byteMultiArray = Battle::Storm::GetBytes(0);
pin_ptr<unsigned char> array_pin = &byteArray[0, ... ,Nth 0];
unsigned char * nativeArray = array_pin;
这里数字N是数组的维数。
//for N = 2
pin_ptr<unsigned char> array_pin = &byteArray[0,0];
//for N = 4
pin_ptr<unsigned char> array_pin = &byteArray[0,0,0,0];
答案 1 :(得分:10)
你可以使用pin_ptr&lt;&gt;得到非托管数组
array<Byte>^ arr = gcnew array<Byte>(100) ;
pin_ptr<unsigned char> pUnmanagedArr = &arr[0];