zoukankan      html  css  js  c++  java
  • 在内存流中对象的二进制序列化

    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    using System;
    public sealed class Serializer
    {
        private Serializer() { }
    
        public static string SerializeObject(object obj)
        {
            IFormatter formatter = new BinaryFormatter();
            string result = string.Empty;
            using (MemoryStream stream = new MemoryStream())
            {
                formatter.Serialize(stream, obj);
    
                byte[] byt = new byte[stream.Length];
                byt = stream.ToArray();
                //result = Encoding.UTF8.GetString(byt, 0, byt.Length);
    
                result = Convert.ToBase64String(byt);
                stream.Flush();
            }
            return result;
        }
    
        public static object DeserializeObject(string str)
        {
            IFormatter formatter = new BinaryFormatter();
            //byte[] byt = Encoding.UTF8.GetBytes(str);
    
            byte[] byt = Convert.FromBase64String(str);
            object obj = null;
            using (Stream stream = new MemoryStream(byt, 0, byt.Length))
            {
                obj = formatter.Deserialize(stream);
            }
            return obj;
        }
    }

    再次单元测试通过了,说明修改有效,回头debug到“result = Convert.ToBase64String(byt); ”,result的值开头没有"\0"了,都是字母,这才证明了序列化成功的原因。之后对基于64位的字符串转换应该多加关注,往往能起到令人惊喜的效果,本案总算是结案了。
  • 相关阅读:
    重温.NET Remoting(四)
    asp.net mvc3的变态错误
    绝对定位与相对低位的应用
    Tsql script for Job
    Entlib5.0之数据查询
    Jquery Mobile dialog的生命周期
    关于委托Lamda表达式等的一个小例子
    网上摘录 数据分组处理
    Oracle 要点摘录
    [原創]另一種思路固定URL及.NET實現
  • 原文地址:https://www.cnblogs.com/luluping/p/1740123.html
Copyright © 2011-2022 走看看