Ответ 1

Нет, нет фиксированного 1-байтового типа. Фиксированная длина имеет только 4 и 8 байтов. Большинство других числовых значений кодируются как "varint" s, которые являются переменной длиной в зависимости от величины (и знака, но там играет "зигзаг" ). Таким образом, вы можете хранить байты со значением 0-127 в одном байте и 128-255 в двух байтах. 16-разрядные значения будут занимать от 1 до 3 байтов в зависимости от величины (и знака/зигзага и т.д.).

Для краткости существует "байты" для 8-битной версии и "упакованы" для остальных; это позволяет избежать затрат на заголовок поля на значение.