В .proto нет такой спецификации; Вы должны просто задокументировать это (и предположительно привести его соответствующим образом к потребляющему коду).
В сторону: если вы используете реализацию C # protobuf-net, то вы можете сделать это, работая за пределами определения .proto (protobuf-net разрешает сначала код):
[ProtoMember(3)] // <=== field number
public byte SomeValue {get;set;}
Это тогда явно ограничено 0-255, но кодируется на проводе, как вы ожидаете (например, uint32
). Он также выполняет преобразование checked
при десериализации, чтобы проверить правильность значений.
В .proto вышеуказанное ближе всего к:
optional uint32 someValue = 3;