私は、テキストデータを扱うときに優れたFileHelpersライブラリを使用します。これは、ファイルやメモリ内の文字列からテキストフィールドを非常に簡単にデータを表すクラスにダンプすることができます。FileHelpersのようなバイナリデータのインポート/エクスポートユーティリティ?
ビッグエンディアンのマイクロコントローラベースのシステムでは、シリアルデータストリームを読み取る必要があります。非常に限られたマイクロコントローラプラットフォーム上のスペースを節約するために、私はさまざまなマルチバイトタイプのフィールドを含む生のバイナリデータを書く必要があります(基本的には、シリアルポートから構造変数をダンプするだけです)。
私はFileHelpersのアーキテクチャが好きです。私は、データを表すクラスを作成し、そのクラスにデータを入れる方法をエンジンに知らせる属性でタグ付けします。エンジンに単一のレコードを表す文字列を送り、データの逆シリアル化表現を得ることができます。しかし、これは、生データが決して区切られないという点でオブジェクトの直列化とは異なります。単純なバイナリの固定レコード形式です。
FileHelpersは、おそらくそれは、私はユニコードの問題があるかもしれないと疑う*表示と NULLを扱うことはできません
ようなバイナリデータを読み込むには適していません(エンジンは、文字列として入力を受け取り、私はバイトを読まなければなりません彼らは私のデータコンバータのクラスに行く前に、シリアルポートからそれらをユニコード文字列に翻訳)。私がヌルを送信しないように注意している限り、私は実験としてバイナリストリームと
を読むように設定しました。
これまでのところうまくいきます。生データを読み込んで新しいエンディアンの問題を説明する新しいコンバータを簡単にセットアップできます。現在
はNULLで失敗し、
は複数のレコードを処理できません(レコード間にCRLFが必要です)。
私が知りたいのは、誰かがFileHelpersと同様に動作するオープンソースライブラリを知っていて、バイナリデータを処理するように設計されていることです。
私はこのタスクを処理するためにFileHelpersから何かを派生することを検討していますが、これを行うためにすでに利用可能なものがあるはずです。
*入力ストリームではnullについては不平を言わないことが判明しました。テストプログラムに無関係のバグがありましたが、どこに問題があると思いますか?最初に少し深く調査したはずです!
これは非常に軽量なデータを生成するためのコードであれば、理想的な解決策になりそうです。 私は、数キロバイトのストレージしか備えていないAVRマイクロコントローラベースのプラットフォームであるArduinoを使用しているため、スペースが最大の問題です。現時点では、書式設定なしでシリアルポートから構造体をダンプするだけで、オーバーヘッドは最小限に抑えられます。 C++プロトコルバッファライブラリが大規模で、8ビット環境にコンパイルできるかどうかは今考えていますか? – DaveK
現時点では、スペース限定のシナリオでCバージョンを使用することをお勧めしますが、新しいスリムバージョンがリリースされています:http://groups.google.com/group/protobuf/browse_thread/thread/5520b05194d73d76# 。しかしそれでもまだそれは大きすぎるかもしれません。私は正直に分かりません。そして8ビットは...挑戦的です。残念ながら、私は「ノー」と疑っています。ごめんなさい。 –