protobuf消息的分隔符是什么?

时间:2018-09-14 17:18:57

标签: serialization protocol-buffers

protobuf消息的分隔符是什么?我正在处理序列化消息。我想知道消息是否以$$ __ $$开头并以相同的符号结尾。

1 个答案:

答案 0 :(得分:1)

(除了现有的答案12

协议缓冲区的通用成帧方法是在实际的protobuf消息之前加一个varint

该实现已经是protobuf库的一部分,例如:

祝您的项目好运!

EDIT> The official reference指出:

  

如果要将多个消息写到单个文件或流中,则由您来跟踪一条消息的结尾和下一条消息的开始。协议缓冲区连线格式不是自定界的,因此协议缓冲区解析器无法确定消息在何处结束。解决此问题的最简单方法是在编写消息本身之前先编写每个消息的大小。当您读回消息时,您将读取大小,然后将字节读取到单独的缓冲区中,然后从该缓冲区进行解析。 (如果要避免将字节复制到单独的缓冲区,请检查CodedInputStream类(在C ++和Java中),可以告知该类将读取限制为一定数量的字节。)