如何使用 yaml-cpp 发出和解析原始二进制数据

发布于 2024-09-29 05:15:36 字数 163 浏览 4 评论 0 原文

是否可以发出和读取(解析)二进制数据(图像、文件等)? 如下所示: http://yaml.org/type/binary.html 我怎样才能在 yaml-cpp 中做到这一点?

Is it possible to emit and read(parse) binary data(image, file etc)?
Like this is shown here:
http://yaml.org/type/binary.html
How can I do this in yaml-cpp?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回首观望 2024-10-06 05:15:37

这里回答了如何使用 yaml-cpp 库从 yaml 文件中读取/解析二进制数据。

这个答案假设您能够从 yaml 文件加载 YAML::Node 节点对象 - yaml-cpp 教程中进行了解释: https://github.com/jbeder/yaml-cpp/wiki/Tutorial)。

从 yaml 节点解析二进制数据的代码是:

YAML::Binary binary = node.as<YAML::Binary>();
const unsigned char * data = binary.data();
std::size_t size = binary.size();

然后,您有一个已知大小“size”的字节“data”数组。

Here it is answered how to read/parse binary data from a yaml file with the yaml-cpp library.

This answer assumes that you are able to load a YAML::Node node object from a yaml file - explained in the yaml-cpp tutorials: https://github.com/jbeder/yaml-cpp/wiki/Tutorial).

The code to parse binary data from a yaml node is:

YAML::Binary binary = node.as<YAML::Binary>();
const unsigned char * data = binary.data();
std::size_t size = binary.size();

Then you have an array of bytes "data" with a known size "size".

原谅我要高飞 2024-10-06 05:15:36

修订版 425 开始,是的! (用于发出)

YAML::Emitter emitter;
emitter << YAML::Binary("Hello, World!", 13);
std::cout << emitter.c_str();

输出

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

语法是

YAML::Binary(const char *bytes, std::size_t size);

我不确定如何传递字节数组: char 不一定是一个字节,所以我不确定该算法的可移植性。您的字节数组通常采用什么格式?

(问题是 uint8_t 还不是标准的 C++,所以我对使用它有点担心。)

至于解析,yaml-cpp 肯定会解析数据作为字符串,但还没有解码算法。

As of revision 425, yes! (for emitting)

YAML::Emitter emitter;
emitter << YAML::Binary("Hello, World!", 13);
std::cout << emitter.c_str();

outputs

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

The syntax is

YAML::Binary(const char *bytes, std::size_t size);

I wasn't sure how to pass the byte array: char isn't necessarily one byte, so I'm not sure how portable the algorithm is. What format is your byte array typically in?

(The problem is that uint8_t isn't standard C++ yet, so I'm a little worried about using it.)

As for parsing, yaml-cpp will certainly parse the data as a string, but there's no decoding algorithm yet.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文