使用Python,如何获得我的Google protobuf消息的二进制序列化?

时间:2009-12-07 11:29:36

标签: python protocol-buffers

我在protobuf Python documentation中看到了函数SerializeAsString,但是就像这样表明,这给了我二进制数据的字符串版本。有没有办法使用Python序列化和解析protobuf数据的二进制数组?

我们有一个C ++应用程序,它将protobuf消息作为二进制数据存储在一个文件中。我们想用Python读取和写入文件。

4 个答案:

答案 0 :(得分:4)

Python字符串可以包含二进制数据,因此SerializeAsString返回二进制数据。

答案 1 :(得分:1)

我认为字符串是在Python中表示二进制数据的常用方法。你究竟想做什么?

[编辑]

看一下struct模块:http://docs.python.org/library/struct.html

答案 2 :(得分:0)

不清楚你想做什么:

  1. 使用整个消息的序列化形式执行某些操作(来自SerializeAsString方法)。不确定你想用它做什么?
  2. 在protobuf消息中存储一个字节字符串 - 只需在.proto文件中使用bytes类型,在python中使用字节字符串作为变量。

答案 3 :(得分:0)

您可以使用Pythons Strings来获取原型缓冲区序列化数据(无论它们是如何包装的 - 无论是Python,Java,C ++还是其他任何语言)。

这些是来自Pythons版本的proto缓冲区教程: address_book.ParseFromString(f.read())