テキスト データを扱うときは、優れた FileHelpers ライブラリを使用します。これにより、テキスト フィールドをファイルまたはメモリ内文字列からデータを表すクラスに簡単にダンプできます。
ビッグ エンディアンのマイクロコントローラー ベースのシステムを使用する場合、シリアル データ ストリームを読み取る必要があります。非常に限られたマイクロコントローラー プラットフォームでスペースを節約するために、さまざまなマルチバイト型のフィールドを含む生のバイナリ データを書き込む必要があります (基本的には、シリアル ポートから構造体変数をダンプするだけです)。
私は FileHelpers のアーキテクチャが好きです。データを表すクラスを作成し、データをクラスに入れる方法をエンジンに指示する属性でタグ付けします。単一のレコードを表す文字列をエンジンに入力し、データの逆シリアル化された表現を取得できます。ただし、これはオブジェクトのシリアル化とは異なり、生データはまったく区切られておらず、単純なバイナリ固定レコード形式です。
FileHelpers は、表示される null を処理できないため、おそらくそのようなバイナリ データの読み取りには適していません。 * Unicode の問題があると思われます (エンジンは入力を文字列として受け取るため、シリアル ポートからバイトを読み取って変換する必要があります)。データコンバータークラスに移動する前に、それらを Unicode 文字列に変換します)。実験として、バイナリ ストリームを読み取るように設定しましたが、null を送信しないように注意している限り、これまでのところ問題なく動作しています。生データを読み取り、エンディアン形式の問題などを説明する新しいコンバーターをセットアップするのは簡単です。現在、null で失敗し、複数のレコードを処理できません (レコード間に CRLF が必要です)。
私が知りたいのは、FileHelpers と同様に機能するが、バイナリ データを処理するように設計されたオープン ソース ライブラリを誰かが知っているかどうかです。
このタスクを処理するために FileHelpers から何かを派生させることを検討していますが、これを行うために既に利用できるものがあるはずです。
*入力ストリームの null については文句を言わないことがわかりました。Null に問題があると予想していたところに、テスト プログラムに関連のないバグがありました。最初にもう少し深く調査するべきでした!