3

是否可以发出和读取(解析)二进制数据(图像、文件等)?就像这里显示的那样:http: //yaml.org/type/binary.html 如何在 yaml-cpp 中执行此操作?

4

2 回答 2

3

修订版 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肯定会将数据解析为字符串,但目前还没有解码算法。

于 2010-10-28T23:14:43.827 回答
3

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

然后你有一个已知大小“大小”的字节“数据”数组。

于 2016-05-15T17:26:26.417 回答