我可以在protobuf中描述恒定大小的消息吗?

时间:2016-03-24 22:59:36

标签: c++ protocol-buffers

例如,我有下一条消息:

Message Header {
    fixed32 messageType;
    fixed32 messageSize;
}

我可以肯定,在任何平台上,在任何语言中,Header都会以恒定大小的字节数组进行分类?

1 个答案:

答案 0 :(得分:1)

是的......是的, 应该是可预测且固定大小的。有效负载是固定大小的,并且标头是varint编码的。这里有一些轻微的问题,因为varint规范实际上并没有禁止次优编码 - 它理论上 最多可包含9个额外字节的零填充只有连续位设置。但在实践中这不是一个问题。

所以:这些数据解释为varint(值:1):

预期:

00000001

次优:

10000001 10000000 10000000 10000000 00000000

非常不理想:

10000001 10000000 10000000 10000000 10000000 10000000 10000000 10000000 10000000 00000000

(每个字节的MSB是连续标志;其他7位是有效载荷,最低有效组第一;这里varint的最大大小应该是10个字节,因为只有64位预计,但我想知道是否有任何图书馆没有明确检查这个!)

实际上:图书馆使用第一种形式。

相关问题