Как выделять и разбирать сырые двоичные данные с использованием YAML-CPP
-
27-09-2019 - |
Вопрос
Можно ли выбросить и прочитать (анализ) двоичные данные (изображение, файл и т. Д.)? Как это показано здесь:http://yaml.org/type/binary.html.Как я могу сделать это в YAML-CPP?
Решение
Как Редакция 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
Обязательно анализируют данные как строку, но пока нет алгоритма декодирования.
Другие советы
Здесь отвечает, как прочитать / разбирать двоичные данные из файла yaml с библиотекой YAML-CPP.
Этот ответ предполагает, что вы сможете загрузить объект узла YAML :: Node из файла YAML - объяснено в руководствах YAML-CPP: https://github.com/jbeeder/yaml-cpp/wiki/tuTorial.).
Код для разбора двоичных данных из узла ЯМЛ:
YAML::Binary binary = node.as<YAML::Binary>();
const unsigned char * data = binary.data();
std::size_t size = binary.size();
Затем у вас есть массив байтов «Данные» с известным размером «размер».