Python API,用于解析包含数组格式

时间:2018-05-08 03:58:04

标签: python c++ protocol-buffers binaryfiles protobuf-c

我在解析包含数组格式的protobuf数据的二进制文件时遇到问题。

当我使用python API时,ParseFromString输出始终为零或无。

二进制文件中的序列化protobuf数据是使用C ++ API SerializeToArray生成的。但是要解析bin文件,我想使用python进行解析。但是在python中,我找不到任何API来将序列化的protobuf数据解析为二进制文件中的数组。

是否有任何python API可以解决此问题?任何人都可以为此建议一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

C ++界面:

bool SerializeToArray(void * data, int size) const

只是将二进制数据存储到字节数组中,而不是字符串对象。如果然后将其写入文件,则可以按正常方式对其进行反序列化,如tutorial所示:

address_book = addressbook_pb2.AddressBook()
f = open(sys.argv[1], "rb")
address_book.ParseFromString(f.read())

在C ++端使用SerializeToArray()的事实不会改变文件的格式。当然,C ++代码可以是例如将自定义标头写入需要删除的文件,但这将是代码的不同部分。