//序列化
IFormatter fm = new BinaryFormatter();
            Stream sm = new MemoryStream();
            fm.Serialize(sm, model);                    //model(对象) 里面又有值
            sm.Seek(0, SeekOrigin.Begin);             
            StreamReader reader = new StreamReader(sm);
            string strCart = reader.ReadToEnd(); 
            reader.Close();
到这里 strCart  的值:\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0AMYMF.Model, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null\0\0\0MYMF.Model.mr_ygzl\0\0\0_id_bh_mc_bm_tc_xb_zw_jbgz_dlxt_mm\a_tcflag\b_picpath\n_groupcode_sr_dh_dz_email_jkzt_xl_sfzh_sj_byxx_xh_bysj_dpbh\a_gnflag_falg\0System.DecimalSystem.DateTimeSystem.一些乱码....
//反序列化
StrCartNew 值是上面那些乱码
byte[] bt = System.Text.Encoding.Default.GetBytes(StrCartNew);
        Stream smNew = new MemoryStream(bt);
        IFormatter fmNew = new BinaryFormatter();
        ygzl yg = (ygzl)fmNew.Deserialize(smNew);自然的报
二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。
应该怎么该??? 

解决方案 »

  1.   

    byte[]转换成字符 已经丢失数据了使用BASE64编码把
    IFormatter fm = new BinaryFormatter();
                MemoryStream sm = new MemoryStream();
                fm.Serialize(sm, "123");                    //model(对象) 里面又有值             
                string _Value =Convert.ToBase64String(sm.ToArray());
                byte[] bt = Convert.FromBase64String(_Value);
                Stream smNew = new MemoryStream(bt);
                IFormatter fmNew = new BinaryFormatter();
                 object a=fmNew.Deserialize(smNew);