Какой тип данных я должен использовать для небольших значений int в protobuffer? - PullRequest
0 голосов
/ 22 мая 2018

Я посмотрел на типы скалярных значений , и кажется, что нет возможности хранить небольшие значения типа int (практически мне нужны целочисленные значения от 1 до 10).

Есть ли какая-либо опция, кроме созданияперечисление с 10 возможными значениями для этого?

1 Ответ

0 голосов
/ 22 мая 2018

Вы правы в том, что нет конкретной поддержки для меньшего примитива;Это связано с тем, что синтаксис схемы должен поддерживать широкий диапазон реализаций на разных платформах и языках, поэтому типы намеренно оставляются в подмножестве, которое будет доступно для большинства систем.

Перечисления (enum в .proto) обрабатываются как int32 значения с использованием кодировки "varint".Нет смысла использовать int32 против объявления enum со значениями Zero, One и т. Д. Так что вы можете просто использовать int32.Пока вы используете только низкие значения, он будет автоматически кодировать очень эффективно, просто из-за того, как работает кодирование "varint" - все, что находится в диапазоне 0-127, будет кодировать по проводам один байт (плюс заголовок поля, который обычно является еще одним байтом для простых значений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...