是否可以在C ++ / CX中将byte *转换为Array?
目前我通过复制每个值来实现这一点,我知道不空间/性能效率。
我目前的实施是:
Array<byte>^ arr = ref new Array<byte>(byteCount);
for (int i = 0; i < byteCount; i++)
{
arr[i] = *(bytes + i);
}
答案 0 :(得分:7)
有一个数组构造函数(MSDN):
Array(T* data, unsigned int size);
所以在你的情况下,只需:
Array<byte>^ arr = ref new Array<byte>(bytes, byteCount);
This是一篇关于C ++ / CX和WinRT数组模式的精彩文章。
答案 1 :(得分:0)
是的,您也可以使用
Array<byte>^ t = ref new Platform::Array<byte>(byteReaded);
CopyMemory(t->Data, buff, byteReaded);
用于复制或使用
进行访问t->Data
答案 2 :(得分:0)
如果您关心效果,请使用Platform::ArrayReference
代替Platform::Array
如果你需要Platform::Array
,你可以像这样投出
uint8_t *data;
size_t data_size;
...
auto arrayRef = new ArrayReference<uint8_t>(data, data_size);
Array^ array = reinterpret_cast<Array<uint8_t>^>(arrayRef)