首页 文章

C#一步将类对象写入二进制文件

提问于
浏览
0

好吧,在C中,我可以创建一个包含一堆值类型的struct对象,并在需要时将其写入单个write语句中的二进制文件,如下所示:

struct DataFileHeader {
  unsigned short Id;
  unsigned short Type;
  unsigned int Count;
  unsigned int Offset;
};

...

struct DataFileHeader dataFileHeader;

...
rc = _write(fileHandle, &dataFileHeader, 12);

在c#中有没有办法做到这一点?我已经将我的结构转换为c#中的类,并且正在使用BinaryFormatter并尝试序列化该对象,但这会在流中添加一堆文本和其他内容 . 我只想写出对象中的所有值字段 . 这是可能的还是我必须分别写出对象上的每个字段?

1 回答

  • 0
    void Main()
    {
        var fileHeader = new DataFileHeader()
        {
            Count = 10,
            Id = 10,
            Offset = 10,
            Type = 10
        };
    
        Serialize(fileHeader).Dump();
    }
    
    // Define other methods and classes here
    public byte[] Serialize<TObject>(TObject obj)
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        byte[] ret = null;
        using (MemoryStream ms = new MemoryStream())
        {
            binaryFormatter.Serialize(ms, obj);
            ret = ms.ToArray();
        }
        return ret;
    }
    
    [Serializable]
    public struct DataFileHeader
    {
        public short Id;
        public short Type;
        public int Count;
        public int Offset;
    };
    

    如果这不起作用,我认为单独进行可能是唯一的方法 .

    BitConverter.GetBytes(fileHeader.Count).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Dump();
    

相关问题