gpt4 book ai didi

c - Nanopb 从 pb_ostream_t 获取字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:33 25 4
gpt4 key购买 nike

我正在使用 nanopb所以我可以用一些小的、交叉编译的代码来实现 protobuf。我有它的工作基础,但希望将编码的 protobuf 消息作为字符串通过 UDP(在另一个系统上)发送。通常使用完整的 protobuf 库,您可以执行类似 message.serializeToString() 的操作。 Nanopb 似乎没有,但肯定是常见的事情。 nanopb 给出的示例使用它们的 pb_ostream_t 结构和 pb_ostream_from_buffer()有什么想法吗?

最佳答案

在 C 中,二进制字符串只是一个 uint8_t 数组。 (请注意,普通的 C 字符串不能包含二进制数据,因此不能用于存储 protobuf 消息。)

因此 pb_ostream_from_buffer() 是将结果作为“字符串”获取的正确方法。

取自 simple.c example :

uint8_t buffer[128];
pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
status = pb_encode(&stream, SimpleMessage_fields, &message);

编码后的消息在buffer 中,长度为stream.bytes_written。那就是你想要的字符串。

关于c - Nanopb 从 pb_ostream_t 获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31272735/

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