ataSet、object 与 Byte[]二进制 互转

来源:互联网 发布:美元贬值的原因 知乎 编辑:程序博客网 时间:2024/06/08 14:58

转自:http://blog.sina.com.cn/s/blog_620782850100mdsf.html

  //MemoryStream: 创建其支持存储区为内存的流。
        //IFormatter : 提供将序列化对象格式化的功能。

        //DataSet转二进制byte
        public static byte[] GetBinaryFormatData(DataSet dsOriginal)
        {
            byte[] binaryDataResult = null;
            MemoryStream memStream = new MemoryStream();

            //以二进制格式将对象或整个连接对象图形序列化和反序列化。
            IFormatter brFormatter = new BinaryFormatter();

           //dsOriginal.RemotingFormat 为远程处理期间使用的DataSet 获取或设置SerializtionFormat        
            //SerializationFormat.Binary      将字符串比较方法设置为使用严格的二进制排序顺序
            dsOriginal.RemotingFormat = SerializationFormat.Binary;

            //把字符串以二进制放进memStream中
            brFormatter.Serialize(memStream, dsOriginal);
           //转为byte数组
            binaryDataResult = memStream.ToArray();

            memStream.Close();
            memStream.Dispose();
            return binaryDataResult;
        }

        //二进制byte转DataSet
        /// <summary>
        /// 将字节数组反序列化成DataSet对象
        /// </summary>
        /// <param name="binaryData">字节数组</param>
        /// <returns>DataSet对象</returns>
        public static DataSet RetrieveDataSet(byte[] binaryData)
        {
            DataSet ds = null;
            MemoryStream memStream = new MemoryStream(binaryData, true);

            IFormatter brFormatter = new BinaryFormatter();
            ds = (DataSet)brFormatter.Deserialize(memStream);
            return ds;
        }

        /// <summary>
        /// 将object格式化成字节数组byte[]
        /// </summary>
        /// <param name="dsOriginal">object对象</param>
        /// <returns>字节数组</returns>
        public static byte[] GetBinaryFormatData(object dsOriginal)
        {
            byte[] binaryDataResult = null;
            MemoryStream memStream = new MemoryStream();
            IFormatter brFormatter = new BinaryFormatter();

            brFormatter.Serialize(memStream, dsOriginal);
            binaryDataResult = memStream.ToArray();

            memStream.Close();
            memStream.Dispose();
            return binaryDataResult;
        }

        /// <summary>
        /// 将byte[]字节数组反序列化成object对象
        /// </summary>
        /// <param name="binaryData">字节数组</param>
        /// <returns>object对象</returns>
        public static object RetrieveObject(byte[] binaryData)
        {
            MemoryStream memStream = new MemoryStream(binaryData);
            IFormatter brFormatter = new BinaryFormatter();
            Object obj = brFormatter.Deserialize(memStream);
            return obj;
        }


原创粉丝点击