c#如何将结构数组转换为数组结构

标签 c# arrays data-structures struct

我从发送周期性数据包的硬件源的结构化数据的 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/

相关文章:

c# - 系统.Web.UI.ViewStateException : Invalid viewstate

arrays - 从字符分组创建新数组?

c# - C# 中的列表和列表的值

c# - MessageBox 没有获得焦点

C# Silverlight - 具有双向绑定(bind)的组合框?

c# - 通过 C# 读/写 S7-1200 位内存

Javascript合并属于对象中不同键的数组值

c - 你如何清除 C 中的字符串 vector ?

java - 是否可以从索引数据结构中删除并同时避免移位?

c++ - C 结构 (C++ POD) 和 google protobufs 之间的转换?