Come-di emettere e analizzare i dati binari originari utilizzando YAML-cpp

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

  •  27-09-2019
  •  | 
  •  

Domanda

E 'possibile emettere e leggere (sintattici) dati binari (immagini, file etc)? Ti piace questa è illustrato di seguito: http://yaml.org/type/binary.html Come posso fare questo in YAML-cpp?

È stato utile?

Soluzione

revisione 425 , sì! (Per l'emissione)

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

uscite

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

La sintassi è

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

Non ero sicuro di come passare l'array di byte: char non è necessariamente un byte, quindi non sono sicuro di come portatile l'algoritmo è. Quale formato è il tuo array di byte di solito in?

(Il problema è che uint8_t non è standard C ++ ancora, quindi sono un po 'preoccupato per usarlo.)

Per quanto riguarda l'analisi, yaml-cpp certamente analizzare i dati come una stringa, ma non c'è ancora algoritmo di decodifica.

Altri suggerimenti

Qui si risponde come leggere / dati binari parse da un file YAML con la libreria yaml-cpp.

Questa risposta presuppone che si è in grado di caricare un oggetto nodo YAML :: nodo da un file YAML - ha spiegato nel tutorial YAML-CPP: https://github.com/jbeder/yaml-cpp/wiki/Tutorial ).

Il codice per analizzare i dati binari da un nodo YAML è:

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

Poi ci sono una serie di "dati" byte con una dimensione nota "dimensione".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top