2011-12-07 8 views
27

¿Existe un equivalente a int8 o byte type en proto buffs? Me gustaría enviar un objeto de matriz de bytes.Cómo codificar byte [] en proto buffs

+4

una pregunta para los aficionados a los proto reales :) O para los aficionados a la documentación reales ... – sehe

Respuesta

29
+0

Lamentablemente todavía serializa a cadenas en java Pero gracias por el enlace. –

+8

No, según la documentación, el tipo de Java correspondiente es 'ByteString'. Puedes obtener la matriz de bytes usando el método 'toByteArray'. – JesperE

+0

En caso de que ya tenga la matriz de bytes [] simplemente use LiteralByteString para no tener que copiarla. – marios

7

Si usted está buscando para almacenar un byte sola, sin embargo, se recomienda usar el Int32. Es una variable de tipo 'variante' que cambiará de tamaño según los datos almacenados en ella. Entonces, si está almacenando un solo byte, será la estructura más pequeña. El tipo de datos byteS es realmente bastante grande en comparación. Esto se debe a que la estructura de bytes contiene datos como la longitud del índice y otras propiedades.

En la serialización, noté una diferencia de tamaño de aproximadamente la mitad cuando cambio de un byte único almacenado en un byteS a un int32.

Nótese, sin embargo, que esto no aplica a múltiples bytes que se almacenan en los bytes, y sospecho que será mucho más pequeño que el almacenamiento individuales Int32.

3

La clase ByteString proporciona métodos para convertir algunos tipos de protobuff tipo "bytes" o ByteString

public static ByteString CopyFrom(params byte[] bytes); 
public static ByteString CopyFrom(string text, Encoding encoding);