一壶开水.net


哈哈,你好啊
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

再加一篇:把类转换成二进制

Posted on 2005-06-24 17:36  一壶开水  阅读(568)  评论(0)    收藏  举报
刚把文件转两进制的写完,想起来原来还写过一个把类转两进制的,扒翻了半天找了出来,程序很短,就是转二进制,再把二进制再转成类
其中的压缩与加密一直没有实现,不会,什么时候会了什么时候加上

/// <summary>
        
/// 打包成二进制调用
        
/// </summary>
        
/// <returns></returns>
        public static byte[] PackageBinary(object _message,bool compress,bool encrypt)
        {
            MemoryStream ms 
= new MemoryStream();            

            BinaryFormatter bf 
= new BinaryFormatter();
            bf.AssemblyFormat 
= FormatterAssemblyStyle.Full;
            bf.TypeFormat 
= FormatterTypeStyle.TypesAlways;

            
//将callPackage的内容以二进制序列化到内存中
            bf.Serialize(ms,_message);
            ms.Seek(
0,SeekOrigin.Begin);
            
byte[] buffer = new byte[ms.Length];
            ms.Read(buffer,
0,(int)ms.Length);

//            压缩加密
//            if (decrypt)
//            {
//                //Decrpty(buffer);
//            }
//
//            if (expand)
//            {
//                //Expand(buffer);                
//            }

            
return buffer;

        }


        
/// <summary>
        
/// 解包调用数据
        
/// </summary>
        
/// <param name="callPackage"></param>
        
/// <param name="expand"></param>
        
/// <param name="decrypt"></param>
        
/// <returns></returns>
        public static object UnpackageBinary(byte[] callPackage,bool expand,bool decrypt)
        {
//            解压解密
//            if (decrypt)
//            {
//                //Decrpty(buffer);
//            }
//
//            if (expand)
//            {
//                //Expand(buffer);                
//            }
            MemoryStream ms = new MemoryStream(callPackage);
            ms.Seek(
0,SeekOrigin.Begin);
            BinaryFormatter bf 
= new BinaryFormatter();
            bf.AssemblyFormat 
= FormatterAssemblyStyle.Full;
            bf.TypeFormat 
= FormatterTypeStyle.TypesAlways;
            
object s = (object)bf.Deserialize(ms);
            
return s;

        }