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

  • 相关阅读:
    寒武纪思元290芯片和MLU290-M5卡
    NUMA Domian和NUMA Distance
    Understanding Habana Labs's GPU
    AMD Instinct MI100-首个FP64性能超10TFLOPS的计算卡
    编程小记
    Redis二进制安全
    Redis布隆过滤器与布谷鸟过滤器
    缓存与缓存一致性协议
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/talefox/p/1322580.html
Copyright © 2011-2022 走看看