Pergunta

É possível emitir e ler dados binários (parse) (imagem, arquivo etc.)? Como se fosse mostrado aqui:http://yaml.org/type/binary.htmlComo posso fazer isso no YAML-CPP?

Foi útil?

Solução

AS Revisão 425, sim! (para emitir)

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

saídas

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

A sintaxe é

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

Eu não tinha certeza de como passar a matriz de bytes: char Não é necessariamente um byte, então não tenho certeza de quão portátil é o algoritmo. Em que formato é sua matriz de bytes normalmente?

(O problema é que uint8_t Ainda não é o C ++ padrão, por isso estou um pouco preocupado em usá -lo.)

Quanto à análise, yaml-cpp certamente analisará os dados como uma string, mas ainda não há algoritmo de decodificação.

Outras dicas

Aqui é respondido como ler/analisar dados binários de um arquivo YAML com a biblioteca YAML-CPP.

Esta resposta pressupõe que você possa carregar um objeto YAML :: Node de um arquivo YAML - explicado nos tutoriais do YAML -CPP: https://github.com/jbeder/yaml-cpp/wiki/tutorial).

O código para analisar dados binários de um nó YAML é:

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

Então você tem uma matriz de bytes "dados" com um tamanho conhecido "tamanho".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top