我正在開發一個C#應用程序,它讀取二進制文件的內容並在datagrid視圖中顯示相同的內容。該數據的格式是這樣的字節數組轉換的動態結構
[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;
}
現在,用戶可以從數據網格視圖數據的變化,並保存在緩衝區中更新的數據,以便它可以再次寫回文件。
我面對的問題是因爲數據類型不同。當我想將內容寫回字節數組時,我簡單地不能使用固定的結構體大小,因爲我遇到了不同的數據類型大小。
有人能告訴我如何創建一個動態緩衝區,並在字節緩衝區中只寫入所需的數據大小?