3

バイナリデータ(画像、ファイルなど)を出力して読み取る(解析する)ことは可能ですか?このようにここに示されています:http: //yaml.org/type/binary.html yaml-cppでこれを行うにはどうすればよいですか?

4

2 に答える 2

3

リビジョン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必ずしも1バイトである必要はないため、アルゴリズムの移植性がどれほどかはわかりません。バイト配列は通常どのような形式ですか?

(問題は、uint8_tまだ標準のC ++ではないため、使用するのが少し心配です。)

解析に関してyaml-cppは、確かにデータを文字列として解析しますが、デコードアルゴリズムはまだありません。

于 2010-10-28T23:14:43.827 に答える
3

ここでは、yaml-cppライブラリを使用してyamlファイルからバイナリデータを読み取り/解析する方法について説明します。

この回答は、yamlファイルからYAML :: Nodeノードオブジェクトをロードできることを前提としています-yaml-cppチュートリアルで説明されています:https ://github.com/jbeder/yaml-cpp/wiki/Tutorial )。

yamlノードからのバイナリデータを解析するコードは次のとおりです。

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

次に、既知のサイズ「サイズ」のバイト「データ」の配列があります。

于 2016-05-15T17:26:26.417 に答える