C# 将字节[]反序列化回数据表

C# 将字节[]反序列化回数据表,c#,serialization,datatable,binary-serialization,C#,Serialization,Datatable,Binary Serialization,我有以下代码来序列化/反序列化数据表: public static byte[] Serialize(DataTable dt) { System.IO.MemoryStream stream = new System.IO.MemoryStream(); System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.B

我有以下代码来序列化/反序列化数据表:

    public static byte[] Serialize(DataTable dt)
    {
        System.IO.MemoryStream stream = new System.IO.MemoryStream();
        System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        formatter.Serialize(stream, dt); 
        return stream.GetBuffer(); 
    }


    public static DataTable Deserialize(byte[] buffer) 
    {
        System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer);
        System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();

        return formatter.Deserialize(stream) as DataTable; 
    }  
serialize方法工作正常,但反序列化方法会产生以下错误:

  The input stream is not a valid binary format. The starting contents (in bytes) are: 1F-8B-08 ...

我99%确信我在过去使用过这种方法,但不确定出了什么问题

您不应该使用
GetBuffer()
而应该使用
ToArray()
,因为后者实际上返回内容,而
GetBuffer()
可能返回未初始化的字节





您确定要将
序列化
的确切输出提供给
反序列化
?尝试运行
反序列化(序列化(对象))
并查看是否有错误。