Как кодировать byte [] в протоффе - PullRequest
35 голосов
/ 07 декабря 2011

Есть ли эквивалент в int8 или байтовом типе в протоффе?Я хотел бы отправить объект массива байтов.

Ответы [ 3 ]

41 голосов
/ 07 декабря 2011
10 голосов
/ 18 ноября 2012

Если вы хотите сохранить один байт, я бы предложил использовать Int32.Это переменная типа «вариант», размер которой будет меняться в зависимости от данных, которые в ней хранятся.Поэтому, если вы храните один байт, это будет самая маленькая структура.Тип данных byteS на самом деле довольно большой по сравнению.Это связано с тем, что структура байтов содержит такие данные, как длина индекса и другие свойства.

При сериализации я заметил разницу в размере примерно в два раза при переключении с одного байта, хранящегося в byteS, на int32.

Обратите внимание, однако, что это не применимо к нескольким байтам, хранящимся в byteS, что, я подозреваю, будет намного меньше, чем хранение отдельных Int32.

3 голосов
/ 28 сентября 2016

Класс ByteString предоставляет методы для преобразования нескольких типов в "байты" типа protobuff или ByteString

public static ByteString CopyFrom(params byte[] bytes);
public static ByteString CopyFrom(string text, Encoding encoding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...