将BYTE *转换为Array <byte> ^ </byte>

时间:2014-06-01 12:24:35

标签: c++-cx

是否可以在C ++ / CX中将byte *转换为Array?

目前我通过复制每个值来实现这一点,我知道空间/性能效率。

我目前的实施是:

Array<byte>^ arr = ref new Array<byte>(byteCount);
for (int i = 0; i < byteCount; i++)
{
    arr[i] = *(bytes + i);
}

3 个答案:

答案 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)