Comment à émettre et analyser des données binaires brutes en utilisant yaml-cpp

StackOverflow https://stackoverflow.com/questions/4046389

  •  27-09-2019
  •  | 
  •  

Question

Est-il possible d'émettre et lire (parse) des données binaires (image, fichier, etc.)? Comme cela est montré ici: http://yaml.org/type/binary.html Comment puis-je faire en YAML-cpp?

Était-ce utile?

La solution

Au révision 425 , oui! (Pour l'émission)

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

sorties

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

La syntaxe est

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

Je ne savais pas comment passer le tableau d'octets: char est pas nécessairement un octet, donc je ne sais pas comment l'algorithme portable est. Quel est le format de votre tableau d'octets généralement dans?

(Le problème est que uint8_t n'est pas standard C ++, donc je suis un peu inquiet de l'utiliser.)

En ce qui concerne l'analyse syntaxique, yaml-cpp va certainement analyser les données sous forme de chaîne, mais il est encore pas d'algorithme de décodage.

Autres conseils

Ici, il est répondu à lire des données binaires / parse à partir d'un fichier YAML avec la bibliothèque yaml-cpp.

Cette réponse suppose que vous êtes en mesure de charger un objet YAML :: noeud noeud à partir d'un fichier YAML - expliqué dans les tutoriels yaml-cpp: https://github.com/jbeder/yaml-cpp/wiki/Tutorial ).

Le code pour analyser des données binaires à partir d'un noeud de yaml est:

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

Ensuite, vous avez un tableau d'octets « données » avec une taille connue « taille ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top