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

时间:2010-10-28 19:13:23

标签: yaml-cpp

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

2 个答案:

答案 0 :(得分:2)

截至revision 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肯定会将数据解析为字符串,但还没有解码算法。

答案 1 :(得分:1)

这里回答了如何使用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();

然后你有一个字节数组&#34;数据&#34;已知大小&#34;尺寸&#34;。