使用 Google protobuf,我将我的序列化消息数据保存到一个文件中 - 每个文件中都有几条消息。我们有 C++ 和 Python 版本的代码,所以我需要使用两种语言都可用的 protobuf 函数。我已经尝试过使用 SerializeToArray 和 SerializeAsString 并且似乎有以下不幸的情况:
SerializeToArray:正如在一个答案中所建议的,使用它的最佳方法是在每条消息前面加上它的数据大小。这对 C++ 很有用,但在 Python 中,这看起来不太可能——我错了吗?
SerializeAsString:这会生成一个与其二进制对应的序列化字符串 - 我可以将其保存到文件中,但是如果序列化结果中的字符之一是 \n 会发生什么 - 我们如何找到行尾或消息的结尾那事?
更新:
请允许我稍微改写一下。据我了解,我无法用 C++ 编写二进制数据,因为我们的 Python 应用程序无法读取数据,因为它只能解析字符串序列化消息。然后我应该SerializeAsString
同时在 C++ 和 Python 中使用吗?如果是,那么将此类数据存储在文本文件而不是二进制文件中是最佳做法吗?我的直觉是二元的,但正如你所见,这看起来不像是一个选择。