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;
            }
        }
    }

  • 相关阅读:
    cpu进程调度---RT Throttling【转】
    Google 开发新的开源系统 Fuchsia
    牛人博客!!!各大招聘网站信息实时查询浏览【转】
    ARM多核处理器启动过程分析【转】
    Linux 下多核CPU知识【转】
    Android的init过程(二):初始化语言(init.rc)解析【转】
    In_interrupt( ) 和In_irq( )【转】
    jiffies溢出与时间先后比较-time_after,time_before【转】
    Linux系统的中断、系统调用和调度概述【转】
    linux中断的上半部和下半部 【转】
  • 原文地址:https://www.cnblogs.com/talefox/p/1322580.html
Copyright © 2011-2022 走看看