我在解析包含数组格式的protobuf数据的二进制文件时遇到问题。
当我使用python API时,ParseFromString输出始终为零或无。
二进制文件中的序列化protobuf
数据是使用C ++ API SerializeToArray
生成的。但是要解析bin文件,我想使用python进行解析。但是在python中,我找不到任何API来将序列化的protobuf
数据解析为二进制文件中的数组。
是否有任何python API可以解决此问题?任何人都可以为此建议一个解决方案吗?
答案 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 ++代码可以是例如将自定义标头写入需要删除的文件,但这将是代码的不同部分。