C语言 在nanopb中使用默认值和字节的最简单方法是什么?

2admgd59  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(150)

我需要声明一条消息,其中一个字节指定一个默认值。
我在.proto文件中试过:

message Message {
    required bytes test = 1 [default = 0];
}

但是我得到了这个错误Expected String.,因为它需要一个字符串作为默认值。有没有一种方法可以将bytes类型视为C中的一个字节(charuint8_t,...)?
我还试图指定一个字符串作为默认值([default = '0']),但我得到的是指定值的相应ASCII转换,而不是我需要的真实的值最好是十六进制值。
编辑:
我是这样做的:

message Message {
    required bytes test = 1 [(nanopb).max_size = 1, (nanopb).fixed_length = true, default = "\xFF"];
}

我不知道这是正确的方法还是只是一种变通方法,但它确实有效。

0md85ypi

0md85ypi1#

默认值=“\xFF”
是的,使用十六进制转义码是二进制数据的正确方法。
在Google的protobuf文档中并没有很好的记录,但是AFAIK这是所有protobuf实现解释默认值的方式。

相关问题