How-to emittieren und analysieren unformatierte Binärdaten mit yaml-cpp

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

  •  27-09-2019
  •  | 
  •  

Frage

Ist es möglich, zu emittieren und lesen (Parsing) Binärdaten (Bild, eine Datei usw.)? Wie dies hier gezeigt: http://yaml.org/type/binary.html Wie kann ich das in yaml-cpp?

War es hilfreich?

Lösung

Wie die Revision 425 , ja! (Zur Emission)

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

Ausgänge

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

Die Syntax ist

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

Ich war nicht sicher, wie das Byte-Array weitergeben müssen: char ist nicht unbedingt ein Byte, also bin ich nicht sicher, wie portable der Algorithmus ist. Welches Format ist Ihr Byte-Array typischerweise in?

(Das Problem ist, dass uint8_t nicht Standard C ++ noch, so dass ich ein wenig mache mir Sorgen um es zu benutzen.)

Wie für die Analyse, yaml-cpp wird sicherlich die Daten als Zeichenfolge analysiert, aber es gibt keine Decodierung Algorithmus vor.

Andere Tipps

Hier wird beantwortet, wie man lesen / Parse-Binärdaten aus einer YAML-Datei mit der YAML-CPP-Bibliothek.

Diese Antwort geht davon aus, dass Sie in der Lage sind, ein YAML :: Node Knotenobjekt aus einer YAML-Datei zu laden, - erklärte in den yaml-CPP-Tutorials: https://github.com/jbeder/yaml-cpp/wiki/Tutorial ).

Der Code Binärdaten aus einem yaml Knoten zu analysieren ist:

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

Dann haben Sie eine Reihe von Bytes „Daten“ mit einer bekannten Größe „Größe“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top