バイナリ ファイルの内容を読み取り、データグリッド ビューに表示する C# アプリケーションを開発しています。データのフォーマットはこんな感じ
[StructLayout(LayoutKind.Sequential)]
public class sProtParElement
{
public ushort wNameIndex;
public eDataTypeTag eDataType; //eDataTypeTag is an enum
public ushort wLen;
public Data_Variant_tag Vt_Var; //Data_Variant_tag is a struct
}
どこ、
[StructLayout(LayoutKind.Explicit)]
public struct Data_Variant_tag
{
[FieldOffset(0)]public byte yVal;
[FieldOffset(0)]public sbyte cVal;
[FieldOffset(0)]public ushort wVal;
[FieldOffset(0)]public short iVal;
[FieldOffset(0)]public uint xVal;
[FieldOffset(0)]public int lVal;
[FieldOffset(0)]public IntPtr pcVal;
}
これで、ユーザーはデータグリッド ビューからデータを変更し、更新されたデータをバッファに保存して、ファイルに再度書き戻すことができます。
私が直面している問題は、さまざまなデータ型が原因です。内容をバイト配列に書き戻したい場合、データ型のサイズがさまざまであるため、単純に固定サイズの構造体を使用することはできません。
動的バッファを作成し、バイトバッファに必要なデータサイズのみを書き込む方法を誰かに教えてもらえますか?