Protocol buffers protobuf数据类型可以升级吗?
我是Protobuf的新手,所以不知道这是否可行。如果在一个proto文件中我有一个Protocol buffers protobuf数据类型可以升级吗?,protocol-buffers,Protocol Buffers,我是Protobuf的新手,所以不知道这是否可行。如果在一个proto文件中我有一个fixed32数据类型,我是否可以将其升级到fixed64,以便也可以读取所有现有的fixed32值(即向后兼容性) 如果没有,执行此类升级的最佳方式是什么?tl;医生:是的,但不包括您的确切类型。 您可以在各种编码类型之间自由移动,因为它们在导线上使用完全相同的编码 从: int32、uint32、int64、uint64和bool都是兼容的–这意味着您可以将字段从一种类型更改为另一种类型,而无需中断前后兼容。
fixed32
数据类型,我是否可以将其升级到fixed64
,以便也可以读取所有现有的fixed32
值(即向后兼容性)
如果没有,执行此类升级的最佳方式是什么?tl;医生:是的,但不包括您的确切类型。 您可以在各种编码类型之间自由移动,因为它们在导线上使用完全相同的编码 从:
int32
、uint32
、int64
、uint64
和bool
都是兼容的–这意味着您可以将字段从一种类型更改为另一种类型,而无需中断前后兼容。如果从不适合于相应类型的线中解析一个数,则将获得与在C++中将该数转换为该类型的相同效果(例如,如果64位数字被读取为<代码> IT32 32 /代码>,则它将被截断为32位)。
遗憾的是,这不适用于fixed32
(仅与sfixed32
兼容)和fixed64
(仅与sfixed64
兼容)
如果已经有大量数据使用fixed32
字段,则必须创建一个新的int64
字段,并从现有字段逐渐过渡到新字段(新代码读取两个字段,但只填充新字段)