作为一项练习,我正在尝试编写一个GPB解码器。根据此文档,字符串和嵌入式消息(等等)具有相同的类型,那么如何区分字符串和嵌入式消息?据我所知,必须使用不同的方法对字符串进行解码和对嵌入式消息进行解码。
作为一项练习,我正在尝试编写一个GPB解码器。根据此文档,字符串和嵌入式消息(等等)具有相同的类型,那么如何区分字符串和嵌入式消息?据我所知,必须使用不同的方法对字符串进行解码和对嵌入式消息进行解码。
这些信息是在.proto
文件中传达的。为了正确解码protobuf消息,解码器必须事先知道消息的类型,并且还必须有相应的.proto
文件。
最简单的方法是首先使用protoc
编译文件,然后读取输出文件,该输出文件本身就是在文件descriptor.proto中定义的protobuf消息。在这个文件中,标识符TYPE_MESSAGE
和TYPE_STRING
用于区分使用相同wire_type
的类型之间的差异。