Определение MAC-адреса с помощью буферов протокола

Я пытаюсь определить восьмибайтовый элемент данных MAC-адреса, используя буферы протокола в C. Я пробовал:

message mac {
    required bytes address = 1 [(nanopb).max_size = 8];
}

но это создает структуру с полем размера и восьмибайтовым адресным полем. Я хотел бы просто и восьмибайтное адресное поле.

Я отказался от использования элемента fixed64, поскольку MAC-адрес представляет собой последовательность байтов. Извините, если это простой вопрос, так как я новичок в буферах протоколов.


person Bryan    schedule 11.07.2012    source источник


Ответы (1)


Поле размера генерируется, потому что нет способа принудительно установить минимальную длину поля «байты». Таким образом, если бы тот, кто создал сообщение, не дал 8 байт в поле, остальные были бы мусорными данными.

Поле размера вызывает некоторые проблемы? Он, конечно, потребляет 2-4 байта оперативной памяти, но это все.

(Я автор nanopb, хотя, вероятно, это то же самое во всех реализациях protobuf.)

Обновление. Начиная с версии nanopb 0.3.8 (выпущенной в 2017 г.) теперь поддерживается байтовое поле фиксированной длины с использованием параметра (nanopb).fixed_length = true.

person jpa    schedule 14.07.2012
comment
Я пытаюсь сделать этот эквивалент с уже существующим кодом, и мне было интересно, есть ли способ сделать поле фиксированным размером. Спасибо за ответ. - person Bryan; 17.07.2012