protobuf怎么会有这么多转义字符?

想将序列化后的pb数据保存到日志,每条数据用\001分割。

但是解析日志的时候(同样用\001)分割,发现数据分割异常,继续排查发现pb数据自身有很多\001、\002等这样的转义符,就连\t也被pb用了。

既然pb自身用了很多这样的转义符, 那么用什么字符分割日志呢?

阅读 3k
3 个回答

序列化后的pb 是 binary 的,会用到所有得字符,用啥分割都不靠谱。

binary数据存一般都是前面先记一个长度,后面存对应长度的内容。


存日志打成 json 不成吗?检索也方便 ...

pb 编码之后的内容是二进制,会用到所有字符。如果写日志,不要写 pb 原文,可以在日志中记录 pb 编码前的文本。

如果一定要pb存储数据并且分割的话,前缀一个长度就行。不过有个疑问,以字符串为主要组成部分的数据,pb和json的大小会差别很大么?可以考虑json + 数据压缩算法来做。灵活且可以根据数据特点选择合适的压缩方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题