c - 使用 Protocol Buffer 定义 MAC 地址

标签 c protocol-buffers mac-address nanopb

我正在尝试使用 C 中的 Protocol Buffer 定义一个八字节 MAC 地址数据元素。我已经尝试过:

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

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

我拒绝使用 fixed64 元素,因为 MAC 地址是一个字节序列。对不起,如果这是一个简单的问题,因为我对 Protocol Buffer 还很陌生。

最佳答案

生成大小字段是因为无法强制“字节”字段的最小长度。因此,如果创建消息的人没有在该字段中给出 8 个字节,则其余部分将是垃圾数据。

size 字段会造成一些麻烦吗?它确实会消耗 2-4 字节的 RAM,但仅此而已。

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

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

关于c - 使用 Protocol Buffer 定义 MAC 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439175/

相关文章:

c++ - ftell 非常大文件的错误

c++ - 加载共享库时出错 : libcapnp-0. 5.3.so

protocol-buffers - 属性错误: module 'google._upb._message' has no attribute 'Message'

android - 当 wifi 打开时,android 中的 Mac 地址是否始终可用?

c++ - 未初始化的值 - Valgrind

c - 如何正确包装带有动态参数数量的函数?

c - 如何获取电子邮件地址的开头

stream - gRPC 流服务只能有一个参数的原因

php - MySQL:连接两个表

java - 查找连接到同一 Wifi 网络的所有设备的 MAC 地址