YAML-CPPを使用して、生のバイナリデータを発して解析するハウツー

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

  •  27-09-2019
  •  | 
  •  

質問

バイナリデータ(画像、ファイルなど)を放出および読み取ることは可能ですか?これがここに示されているように:http://yaml.org/type/binary.htmlYAML-CPPでこれを行うにはどうすればよいですか?

役に立ちましたか?

解決

のように リビジョン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 確かにデータを文字列として解析しますが、デコードアルゴリズムはまだありません。

他のヒント

ここでは、YAML-CPPライブラリを使用してYAMLファイルからバイナリデータを読み取り/解析する方法に答えられます。

この回答は、YAMLファイルからYAML ::ノードノードオブジェクトをロードできることを前提としています - 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();

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top