So fügen Sie einer Protobuf-Nachricht ein int-Array hinzu

Lesezeit: 1 Minute

Benutzeravatar von javaMan
javaMan

Ich muss eine Protobuf-Nachricht verfassen, die 1 Ganzzahlvariablen und ein Ganzzahlarray enthalten sollte.

package protobuf;

message myProto {

optional uint32 message_id =1;
optional int update = 2;
//here I have to add a array of integers
//can I write like     optional int[] array =3;
//or should I use      optional repeated array;
//where array is another message with int variable

}

Ist mein Ansatz richtig?

Array wird über „repeated“ abgebildet:

 repeated int32 data = 4;

Beachten Sie, dass Sie möglicherweise sint32/uint32 benötigen. Beachten Sie außerdem, dass in allen drei Fällen „gepackte Arrays“ verwendet werden können, die effizienter sind;

repeated int32 data = 4 [packed=true];

  • Ist das Konzept des gepackten Arrays auch für Doppelarrays anwendbar?

    – javaMan

    13. September 2011 um 21:05 Uhr

  • Kann ich optionale wiederholte Doppeldaten = 4 schreiben? [packed = true];

    – javaMan

    13. September 2011 um 21:05 Uhr

  • @Raj-Tag; Die Größe der Daten wird ausschließlich zur Laufzeit dadurch bestimmt, wie viele Daten vorhanden sind. In Protobuf gibt es keine Arrays mit fester Größe. Bei „gepackt“ wird den Daten die Größe (in Bytes) vorangestellt.

    – Marc Gravell

    25. Januar 2017 um 11:16 Uhr

  • Aktualisieren: Developers.google.com/protocol-buffers/docs/proto3 heißt es: „In Proto3 verwenden wiederholte Felder skalarer numerischer Typen standardmäßig die gepackte Codierung.“

    – Jason Doucette

    31. Juli 2017 um 17:52 Uhr

  • @Jason stimmt sehr (ich habe eine andere Antwort geschrieben, dann wurde mir klar, dass es bei der Frage nur um das .proto-Schema ging und nicht um das, worüber ich gesprochen habe)

    – Marc Gravell

    31. Juli 2017 um 17:59 Uhr

1452420cookie-checkSo fügen Sie einer Protobuf-Nachricht ein int-Array hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy