例如,我有下一条消息:
Message Header {
fixed32 messageType;
fixed32 messageSize;
}
我可以肯定,在任何平台上,在任何语言中,Header都会以恒定大小的字节数组进行分类?
答案 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位预计,但我想知道是否有任何图书馆没有明确检查这个!)
实际上:图书馆使用第一种形式。