.proto、.pb、.pbtxt文件区别及Protobuf使用相关疑问
Protobuf 常见问题解答
1. 你对.pb和.pbtxt的认知完全正确
*.pb是Protobuf标准二进制序列化产物,特点是体积小、解析效率高,多用于生产环境的数据传输与存储;*.pbtxt是对应的ASCII明文存储的文本序列化版本,这个认知没有问题。
2. .pbtxt高可读性的原因
pbtxt序列化时会直接复用.proto文件中定义的字段名,以明文键值对的形式输出数据,数值、字符串、枚举值都直接保留人类可识别的原始写法,不会像二进制.pb那样把字段映射为数字标签、做压缩编码,所以可以直接用文本编辑器打开查看完整结构和内容。
3. .pbtxt加注释符合官方规范
Protobuf文本格式原生支持注释语法:单行注释用//,多行注释用/* */,解析时注释内容会被自动忽略,完全不影响数据的正常读写,各类开源项目里带注释的.pbtxt都是符合标准用法的。
4. 解析必须搭配对应的.proto文件
无论.pb还是.pbtxt都无法脱离.proto单独完成结构化解析:
- 二进制
.pb仅存储了字段的数字标签和编码后的值,没有.proto就无法确认标签对应的字段含义、数据类型,根本无法解码 - 即使是明文的
.pbtxt,没有.proto定义的情况下也只能做纯文本查看,无法确认字段类型、枚举映射、嵌套结构规则,没法转换成程序可操作的结构化数据。
内容的提问来源于stack exchange,提问作者David Rubio
相关产品推荐
相关产品推荐

