gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:29:58 25 4
gpt4 key购买 nike

例如,我有下一条消息:

Message Header {
fixed32 messageType;
fixed32 messageSize;
}

我可以确定在任何平台、任何语言上,Header 都会被序列化为常量字节数组?

最佳答案

是的......应该是可预测的和固定大小的。有效载荷是固定大小的, header 是 varint 编码的。这里有一个轻微陷阱,varint 规范实际上并不禁止次优编码 - 它可以理论上包含最多 9 个额外字节的零填充,仅包含连续位放。但在实践中这不是问题。

因此:这些是解释为 varint(值:1)的相同数据:

预期:

00000001

次优:

10000001 10000000 10000000 10000000 00000000

非常次优:

10000001 10000000 10000000 10000000 10000000 10000000 10000000 10000000 10000000 00000000

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

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

关于c++ - 我可以在 protobuf 中描述恒定大小的消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36211408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com