protocol-buffers – 协议缓冲区序列化输出是完全确定的吗?

给定协议缓冲模式和一些数据,协议缓冲库和语言的序列化确定性?

基本上,我保证相同的数据总是以相同的方式(直到字节)序列化,无论使用哪个库?

最佳答案 通常,相同的数据将以完全相同的方式序列化.

但是,protobuf规范无法保证这一点.例如,编码中的以下差异是允许的,并且必须在所有符合的库中解码为相同的结果:

>以不同于标签号顺序的顺序编码字段.
>将打包字段编码为解压缩.
>将整数编码为比所需更长的varint字节序列.
>多次编码相同(非重复)字段.
>可能是其他人.

点赞