flatbuffer中阵列的结构?

时间:2018-05-17 22:36:00

标签: flatbuffers apache-arrow

假设我有以下flatbuffer IDL文件:

table Monster {
  mana:short = 150;
  inventory:[ubyte];  // Vector of scalars.
}

我想要在缓冲区中序列化2个Monster个对象的数组。

显然可以在序列化数据时为整个缓冲区创建以下内存布局:

ArrayOfUBytesForInventoryOfMonster1|ArrayOfUBytesForInventoryOfMonster2|Monster1Data|Monster2Data

这意味着现在所有inventory字段都位于连续的内存位置。

但是也可以在mana字段上执行此操作吗? 即我想用这个内存表示序列化我的对象:

ArrayOfUBytesForInventoryOfMonster1|ArrayOfUBytesForInventoryOfMonster2|Monster1ManaValue|Monster2ManaValue|Monster1Data|Monster2Data.

其效果是将所有“法术力”值转换为内存中的原始数组。

是否可以使用Flatbuffers执行此操作?似乎字段只能在对象本身启动后序列化

1 个答案:

答案 0 :(得分:0)

两者都不会以您指示的方式运作。像mana这样的标量字段总是在表格中内联,因此永远不会与相似的字段连续。甚至像inventory之类的向量都以大小字段作为前缀,因此它们的元素不是连续的,即使它们可以是相邻的,因为它们不是内联的。

如果您想要连续的数据,那么您必须明确写出这些值的单个向量。