gpt4 book ai didi

c - 使用 "byte"数据类型与 protobuf-c 的示例

转载 作者:太空狗 更新时间:2023-10-29 15:32:59 26 4
gpt4 key购买 nike

我正在尝试在 c 项目中使用 protobuf-c 来传输一些数据。缺少“字符串”和“字节”数据类型的示例 here

任何人都可以提供一个小例子吗?我的问题是我不知道如何为具有这些数据类型的消息分配内存,因为它们的大小在编译时未知。

最佳答案

请查看以下链接:

https://groups.google.com/forum/#!topic/protobuf-c/4ZbQwqLvVdw

https://code.google.com/p/protobuf-c/wiki/libprotobuf_c (虚拟缓冲区)

基本上 ProtobufCBinaryData 是一个结构,您可以按照第一个链接中的描述访问它的字段。我也在下面展示了一个小例子(类似于官方 wiki https://github.com/protobuf-c/protobuf-c/wiki/Examples 上的例子)。

你的原型(prototype)文件:

message Bmessage {
optional bytes value=1;
}

现在假设您收到了这样的消息并想提取它:

  BMessage *msg;

// Read packed message from standard-input.
uint8_t buf[MAX_MSG_SIZE];
size_t msg_len = read_buffer (MAX_MSG_SIZE, buf);

// Unpack the message using protobuf-c.
msg = bmessage__unpack(NULL, msg_len, buf);
if (msg == NULL) {
fprintf(stderr, "error unpacking incoming message\n");
exit(1);
}

// Display field's size and content
if (msg->has_value) {
printf("length of value: %d\n", msg->value.len);
printf("content of value: %s\n", msg->value.data);
}

// Free the unpacked message
bmessage__free_unpacked(msg, NULL);

希望对您有所帮助。

关于c - 使用 "byte"数据类型与 protobuf-c 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com