0

我有一个函数可以在 C++/CLI 中将 unsigned short 的本机代码转换为托管代码,但我的方法需要调用复制两次。有没有其他方法可以使这个过程更快?

//input
unsigned short* m_rawDataPtr; 
//output
array<uns16>^ m_rawData;

...
int size = data.GeSize();
array<short>^ dataSigned = gcnew array<short>( size / 2);
m_rawData = gcnew array<unsigned short>((int)size / 2);

Marshal::Copy(IntPtr((void*)(m_rawDataPtr),dataSigned, 0, dataSigned->Length);
System::Buffer::BlockCopy(dataSigned, 0, m_rawData, 0, (Int32)(size));

谢谢,

4

1 回答 1

1

你可以尝试这样的事情:

//input
unsigned short* m_rawDataPtr; 
//output
array<unsigned short>^ m_rawData;

cli::pin_ptr<unsigned short> pinnedManaged = &m_rawData[0];
std::memcpy(pinnedManaged , m_rawDataPtr, arrayLength * sizeof(unsigned short));
于 2018-06-21T19:15:05.340 回答