用于解析包含数组格式的 protobuf 数据的二进制文件的 Python API
Posted
技术标签:
【中文标题】用于解析包含数组格式的 protobuf 数据的二进制文件的 Python API【英文标题】:Python API to parse binary file which contains protobuf data in array format 【发布时间】:2018-05-08 03:58:04 【问题描述】:我在解析包含数组格式的 protobuf 数据的二进制文件时遇到问题。
当我使用 python API 时,ParseFromString 输出始终为零或无。
二进制文件中的序列化 protobuf
数据是使用 C++ API SerializeToArray
生成的。但是要解析bin文件,我想用python来解析。但是在python中我找不到任何API来将序列化的protobuf
数据解析为二进制文件中的数组。
是否有任何 python API 来解决这个问题?任何人都可以为此提出解决方案吗?
【问题讨论】:
【参考方案1】: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())
SerializeToArray()
在 C++ 端使用的事实不会改变文件的格式。当然,C++ 代码可以例如将自定义标头写入需要删除的文件,但这将是代码的不同部分。
【讨论】:
以上是关于用于解析包含数组格式的 protobuf 数据的二进制文件的 Python API的主要内容,如果未能解决你的问题,请参考以下文章