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