2013-07-11 2 views
2

Какой тип данных я использую для хранения одного байта в сообщении буфера протокола? Видя список в https://developers.google.com/protocol-buffers/docs/proto#scalar, кажется, что один из типов * int32 лучше всего подходит. Есть ли более эффективный способ хранения одного байта?Хранить один байт в сообщении protobuf

ответ

2

Ну, вам нужно понять, что в любом случае потребуется как минимум два байта - один для тега и один для данных. (Тег займет больше места, если номер поля высок.) Если вы используете uint32, для данных для значений до 127 и 1 байта потребуется 1 байт и 2 байта для чего-либо большего.

Я не верю, что есть что-то, что будет более эффективным, чем это.

+0

Почему до 127 и не до 255? – VladL

+0

@ VladL: Из-за формата varint - верхний бит каждого байта является фактически продолжением бит. –

Смежные вопросы