我从发送周期性数据包的硬件源的结构化数据的 IntPtr 开始。线程从 Intptr 缓冲区复制数据包并将 byte[] 放入队列中。稍后读取队列并使用 this answer 将 byte[] 转换为结构。并成为 Packet 类型的集合(数组)。
struct Packet {
long time;
int field1;
short field2;
}
Packet[] array_of_packet;
在不复制结构定义的情况下,我想使用数据,就好像它是数组结构一样。
struct ArrayOfPacket {
long[] time;
int[] field1;
short[] field2;
}
ArrayOfPacket data;
这种格式允许其他函数将它们用作向量:
Plot(data.time, data.field1);
最佳答案
如果您想要的只是一种转换为数组的简单方法,那么只需使用 LINQ:
Plot (array_of_packet.Select(p => p.time).ToArray(),
array_of_packet.Select(p => p.field1).ToArray());
如果您正在寻找一种无需复制成本即可重新排列内存中数据的神奇方法,那么您就不走运了。 ;-)
关于c#如何将结构数组转换为数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777586/