【问题标题】:FlatBuffers and NULL valueFlatBuffers 和 NULL 值
【发布时间】:2018-12-16 15:56:15
【问题描述】:

在 FlatBuffers 中存储 NULL 值的规范方法是什么?

我有

ExpirationDate     *int64

我明白为什么 FlatBuffers 没有定义 NULL。但我不明白如何正确处理。我应该有额外的 bool 字段还是将 value 设为数组?

ExpirationDate     [int64]

ExpirationDate     int64
ExpirationDateNull bool

对于表格,我也可以使用union

【问题讨论】:

  • “我明白为什么 FlatBuffers 没有定义 NULL”。为什么会这样??

标签: serialization flatbuffers


【解决方案1】:

第三个选项是struct NullableInt64 { i:int64 },然后在表中有一个NullableInt64 类型的字段。当此字段不存在时,访问器函数将返回NULL。而且因为它是一个结构体,它会在线路上占用与裸 int64 相同的空间(它们都是 8 个字节,并且内联存储在父级中)。

【讨论】:

    【解决方案2】:

    用于存储 int32 / int64 等值。您可以直接将标量保留在表中。

    但在您的情况下,您有一个间接,可以通过平面缓冲区中的非标量创建的间接来模仿。

    非标量是结构、数组和表。

    所以你可以试试:

    Struct IntPtr 
    { 
    val:int64
    } 
    
    Table Expiration 
    { 
    ExpirationDate:IntPtr; 
    }
    

    【讨论】:

    • 啊抱歉,没看到你同时回答 :)
    • 是的。巧合:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多