3

我正在尝试使用 C 中的协议缓冲区定义一个八字节的 MAC 地址数据元素。我尝试过:

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

但这会创建一个具有大小字段和八字节地址字段的结构。我想只是和八字节的地址字段。

我拒绝使用 fixed64 元素,因为 MAC 地址是一个字节序列。对不起,如果这是一个简单的问题,因为我对协议缓冲区相当陌生。

4

1 回答 1

2

生成大小字段是因为无法在“字节”字段上强制设置最小长度。因此,如果创建消息的人没有在字段中提供 8 个字节,那么其余的将是垃圾数据。

尺寸字段是否会引起一些麻烦?它确实会消耗 2-4 字节的 RAM,但仅此而已。

(我是 nanopb 的作者;尽管这可能在所有 protobuf 实现中都是相同的。)

更新:自 nanopb 0.3.8(2017 年发布)以来,现在使用选项支持固定长度字节字段(nanopb).fixed_length = true

于 2012-07-14T18:52:56.017 回答