Я наткнулся на nanopb и хочу использовать его в своем проекте.Я пишу код для встраиваемого устройства, поэтому ограничения памяти представляют собой реальную проблему.
Моя цель - передавать элементы данных с устройства на устройство, каждый элемент данных имеет 32-битный идентификатор и значение.Значение может быть любым от 1 символа до плавающей строки или длинной строки.Мне интересно, что было бы наиболее эффективным способом объявления сообщений для этого типа проблемы.
Я думал, что-то вроде этого:
message data_msg{
message data_item{
int32 id = 1;
oneof value{
int8 ival = 2;
float fval = 3;
string sval = 4;
}
}
repeated data_item;
}
Но, как я понял, это преобразуетсяв C union, который является размером самого большого элемента.Скажем, я ограничиваю строку 50-ю символами, тогда объединение всегда имеет длину 50 байт, даже если мне нужно 4 байта для числа с плавающей запятой.
Правильно ли я понял это или есть какой-то другой способ сделать это?
Спасибо!