我正在开发一个 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;
}
现在,用户可以对数据网格视图中的数据进行更改,并将更新的数据保存在缓冲区中,以便可以再次将其写回文件。
我面临的问题是因为数据类型不同。当我想将内容写回字节数组时,由于遇到的数据类型大小不同,我无法使用固定的结构大小。
有人能告诉我如何创建一个动态缓冲区并在字节缓冲区中只写入所需的数据大小吗?