Utilizzando Python, come faccio a ottenere una serializzazione binaria del mio messaggio protobuf Google?
-
13-09-2019 - |
Domanda
Vedo la funzione SerializeAsString nel protobuf documentazione Python , ma come questo suggerisce, questo mi dà una versione stringa di dati binari. Esiste un modo di serializzazione e l'analisi di una matrice binaria dei dati protobuf utilizzando Python?
Abbiamo un'applicazione C ++ che memorizza i messaggi protobuf come dati binari in un file. Vorremmo leggere e scrivere il file utilizzando Python.
Soluzione
stringhe Python possono contenere dati binari, quindi SerializeAsString
restituisce i dati binari.
Altri suggerimenti
Credo che le stringhe sono il solito modo di rappresentare i dati binari in Python. Che cosa esattamente vuoi fare?
[Modifica]
Date un'occhiata al modulo struct: http://docs.python.org/library /struct.html
Non è chiaro che cosa si vuole fare:
- Fare qualcosa con la forma serializzata di un intero messaggio (Dal metodo SerializeAsString). Non sei sicuro di quello che ci si vuole fare con questo?
- Conservare una stringa di byte all'interno di un messaggio protobuf - basta utilizzare il tipo di
bytes
nel file Proto, e una stringa di byte in python per la variabile .
È possibile utilizzare Pythons Corde per ottenere i buffer proto dati serializzati (non importa il modo in cui ware ingabbiati - in Python, Java, C ++ o qualsiasi altra lingua).
Queste è la linea da Pythons versione del proto buffer tutorial:
address_book.ParseFromString(f.read())