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