假设我有以下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执行此操作?似乎字段只能在对象本身启动后序列化
答案 0 :(得分:0)
两者都不会以您指示的方式运作。像mana
这样的标量字段总是在表格中内联,因此永远不会与相似的字段连续。甚至像inventory
之类的向量都以大小字段作为前缀,因此它们的元素不是连续的,即使它们可以是相邻的,因为它们不是内联的。
如果您想要连续的数据,那么您必须明确写出这些值的单个向量。