May 03, 2011HEX形式を std::iterator で[Computer]
バイナリイメージを扱う単純なフォーマットとして、HEX形式というものがあります。起源はとても古いのですが、現在でもマイコンの書き込み形式としてなとで使われています。最近、ROMへの書き込みといった少々複雑な機能をもつブートローダを作る必要があり、この形式の読み込みをサポートすることにしました。なお以前こちらのサイトでは『RubyによるHEXフォーマットの読み書き』という記事でHEX形式について取り上げましたが、今回はRubyではなくC++で実装することにします。 HEX形式は1行単位で意味が成立している形式です。ということで行指向でパース、もとい解釈を行い、それをC++の標準的な繰り返しであるiteratorとして解釈した結果を返却することにしました。行単位で逐次処理をすることで、省リソースを実現できます。またiteratorとして実装すると、他の標準的なライブラリと調和がとりやすくなるという利点がうまれます。 実装した結果はhexfile.hです。テストコード(hexfile_test.cpp)で機能確認を行いました。さらにcodepadを使って、これらのファイルを実行した結果も載せておこうと思います。 なおHEX形式としてはインテルHEXとモトローラSレコードの2形式がありますが、その両方に対応してあります。 コメント
コメントする
|
スポンサード リンク
|