【发布时间】:2019-05-22 13:12:16
【问题描述】:
我遇到了 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 联合,即最大元素的大小。假设我将字符串限制为 50 个字符,那么联合始终是 50 个字节长,即使我需要 4 个字节作为浮点数。
我是否正确理解了这一点,还是有其他方法可以做到这一点?
谢谢!
【问题讨论】: