En utilisant Python, comment puis-je obtenir une sérialisation binaire de mon message Google protobuf?
-
13-09-2019 - |
Question
Je vois la fonction SerializeAsString dans la section protobuf documentation Python , mais comme cela suggère, cela me donne une version chaîne des données binaires. Est-il possible de sérialisation et l'analyse d'un tableau binaire de données protobuf en utilisant Python?
Nous avons une application C ++ qui stocke les messages sous forme de données binaires protobuf dans un fichier. Nous aimerions lire et écrire dans le fichier en utilisant Python.
La solution
chaînes de Python peuvent contenir des données binaires, donc SerializeAsString
renvoie des données binaires.
Autres conseils
Je pense que les chaînes sont de la manière habituelle pour représenter des données binaires en Python. Que voulez-vous faire exactement?
[Modifier]
Jetez un oeil sur le module struct: http://docs.python.org/library /struct.html
Il pas clair ce que vous voulez faire:
- Faire quelque chose avec la forme sérialisée d'un message entier (A partir de la méthode SerializeAsString). Je ne sais pas ce que vous voulez faire avec ça?
- Enregistrer une chaîne d'octets dans un message protobuf - il suffit d'utiliser le type de
bytes
dans le fichier .proto, et une chaîne d'octets en python pour la variable .
Vous pouvez utiliser Pythons Cordes pour obtenir des tampons proto données sérialisés (peu importe la façon dont ils Ware crated - en Python, Java, C ++ ou toute autre langue).
C'est la ligne de la version Pythons de proto tampons tutoriel:
address_book.ParseFromString(f.read())