zoukankan      html  css  js  c++  java
  • 序列化及反序列化

    序列化和反序列化可以方便地实现对象(Object)和字节数组(byte[])的转换,其中序列化将Object转换为byte[],反序列化将byte[]转换为Object。

    其中值得注意的有以下几个方面:

    1. 将序列化的对象进行反序列化时,其中间的byte[]一定确保没有变化。否则将出现序列化(反序列化)异常。

    2. 序列化和反序列化的对象需声明[Serializable](可序列化的),切其包含的全部内容(字段)需可序列化。否则将发生序列化异常。(无法加载序列化所需的类型)

    3. 在将已序列化的对象反序列化时,不要求其byte[]的长度一致,反序列化时会自动省略其所需内容后的额外数据。

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace talefox.ShareLib
    {
        public class Serialable
        {
            /// <summary>  
            /// 序列化  
            /// </summary>  
            /// <param name="data">要序列化的对象</param>  
            /// <returns>数据缓冲区</returns>  
            public static byte[] Serialize(object obj)
            {
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                formatter.Serialize(stream, obj);
                byte[] data = stream.GetBuffer();
                return data;
            }
            /// <summary>  
            /// 反序列化  
            /// </summary>  
            /// <param name="data">数据缓冲区</param>  
            /// <returns>对象</returns>  
            public static object Deserialize(byte[] data)
            {
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                System.IO.MemoryStream stream = new System.IO.MemoryStream(data);
                data = null;
                Object obj = formatter.Deserialize(stream);
                return obj;
            }
        }
    }

  • 相关阅读:
    MongoDB数据库学习总结
    windows及linux环境下永久修改pip镜像源的方法
    enumerate枚举函数
    sum求和函数
    zip拉链函数
    python实现面对面快传
    redis实现发布订阅
    python自定义classmethod
    Nginx为什么支持那么高的并发量?
    java进阶(28)--Map集合
  • 原文地址:https://www.cnblogs.com/talefox/p/1322580.html
Copyright © 2011-2022 走看看