JavaMan
Tengo que redactar un mensaje protobuf que debe tener 1 variable entera y una matriz entera.
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
}
¿Es correcto mi enfoque?
La matriz se asigna a través de “repetido”:
repeated int32 data = 4;
Tenga en cuenta que es posible que desee sint32/uint32. También tenga en cuenta que en los tres casos se pueden usar “matrices empaquetadas”, que son más eficientes;
repeated int32 data = 4 [packed=true];
-
¿El concepto de matriz empaquetada también es aplicable para matrices dobles?
– javaMan
13 de septiembre de 2011 a las 21:05
-
¿Puedo escribir datos dobles repetidos opcionales = 4? [packed = true];
– javaMan
13 de septiembre de 2011 a las 21:05
-
etiqueta @Raj; el tamaño de los datos se determina únicamente en tiempo de ejecución por la cantidad de datos que hay; no hay matrices de tamaño fijo en protobuf. En el caso de “empaquetado”, el tamaño (en bytes) se antepone a los datos.
– Marc Gravell
25 de enero de 2017 a las 11:16
-
Actualizar: desarrolladores.google.com/protocol-buffers/docs/proto3 dice “En proto3, los campos repetidos de tipos numéricos escalares usan codificación empaquetada de forma predeterminada”.
– Jason Doucette
31 de julio de 2017 a las 17:52
-
@Jason muy cierto (escribí una respuesta diferente, luego me di cuenta de que la pregunta era puramente sobre el esquema .proto, no sobre lo que estaba hablando)
– Marc Gravell
31 de julio de 2017 a las 17:59