本帖最后由 zhaohad 于 2011-06-16 08:46:07 编辑

解决方案 »

  1.   


    MemoryStream ms = new MemoryStream();
                f.Serialize(ms, myClass);
                byte [] buf = new byte[1024];
    ms.Position = 0L;
                int cnt = ms.Read(buf, 0, 1024);
      

  2.   

    List<Calling> callingList = new List<Calling>(); 
    callingList.Add(new Calling { Id = "001", Room = "302", Site = "01" }); 
    callingList.Add(new Calling { Id = "002", Room = "302", Site = "02" }); 
    Calling[] callingarray = callingList.ToArray(); 
    System.Xml.Serialization.XmlSerializer serializer 
                    = new System.Xml.Serialization.XmlSerializer(callingarray.GetType()); System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
    serializer.Serialize(stream, callingarray); 
    byte[] bytes=stream.GetBuffer();参考下。
      

  3.   


    我把程序改成这样了            MemoryStream ms = new MemoryStream();
                f.Serialize(ms, myClass);
                ms.Position = 0L;
                byte [] buf = new byte[1024];
                int cnt = ms.Read(buf, 0, 1024);
                MemoryStream ms1 = new MemoryStream();
                ms1.Write(buf, 0, cnt);
                myClass2 = (MyClass)f.Deserialize(ms1);可是出现了新的异常“End of Stream encountered before parsing was completed”这样怎么解决?
      

  4.   


            Users users = new Users(1, "csdn");
            IFormatter f = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            f.Serialize(ms, users);
            ms.Position = 0;
            byte[] b = new byte[ms.Length];
            ms.Read(b, 0, b.Length);        MemoryStream msTwo = new MemoryStream(b);
            ms.Position = 0;
            Users usersTwo = f.Deserialize(msTwo) as Users;
            if (usersTwo != null)
                Response.Write(usersTwo.ID + "==" + usersTwo.Name);
    [Serializable]
    public class Users
    {
        public Users(int id, string name)
        {
            this.ID = id;
            this.Name = name;
        }
        public int ID;
        public string Name;
    }
      

  5.   

    指定 ms.Position = 0;的位置等于0,
    从0处开始写入byte
      

  6.   


    把你写的MyClass贴出来看看,可能序列化之后的总长度超过了1024字节
    所以
    ms.Read(buf, 0, 1024)
    没能把全部数据都读出来。
      

  7.   

    Mouse myClass = new Mouse("abc");
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(myClass.GetType());
    MemoryStream ms = new MemoryStream();serializer.Serialize(ms, myClass);
    byte[] buf = ms.GetBuffer();
    MemoryStream ms1 = new MemoryStream(buf);
    Mouse myClass2 = (Mouse)serializer.Deserialize(ms1);