Python API用于解析包含数组格式的protobuf数据的二进制文件

Python API to parse binary file which contains protobuf data in array format

本文关键字:格式 protobuf 数据 二进制文件 数组 包含 API 用于 Python      更新时间:2023-10-16

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

当我使用 python API 时,ParseFromString 输出总是零或无。

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

是否有任何python API可以解决此问题?任何人都可以为此提出解决方案吗?

C++ 接口:

bool SerializeToArray(void * data, int size) const

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

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

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