zoukankan      html  css  js  c++  java
  • 流的压缩与解压缩

    uses Zlib; 
    //压缩 
    procedure DoCompress(var CompressedStream: TMemoryStream); 
    var 
      SourceStream: TCompressionStream; 
      DestStream: TMemoryStream; 
      Count: int64; 
    Begin 
      CompressedStream.Position := 0; 
      Count := CompressedStream.Size; 
      if Count=0 then     //错误 
        Exit; 
      DestStream := TMemoryStream.Create; 
      SourceStream:=TCompressionStream.Create(clMax, DestStream); 
      Try 
        CompressedStream.SaveToStream(SourceStream); 
        SourceStream.Free; 
        CompressedStream.Clear; 
        CompressedStream.WriteBuffer(Count, SizeOf(Count)); 
        CompressedStream.CopyFrom(DestStream, 0); 
      finally 
        DestStream.Free; 
      end; 
      CompressedStream.Position := 0; 
    end; 

    //解压缩 
    procedure DoUncompress(var UnCompressedStream: TMemoryStream); 
    var 
      Count: int64; 
      SourceStream: TDecompressionStream; 
      Buffer: pchar; 
    begin 
      UnCompressedStream.Position:=0; 
      UnCompressedStream.ReadBuffer(Count, sizeof(Count)); 
      if count<0 then 
      begin 
        UnCompressedStream.Position:=0; 
        exit; 
      end; 
      SourceStream := TDecompressionStream.Create(UnCompressedStream); 
      Getmem(Buffer, Count); 
      SourceStream.Read(Buffer^, Count); 
      freeandnil(SourceStream); 
      UnCompressedStream.Clear; 
      UnCompressedStream.WriteBuffer(Buffer^,Count); 
      UnCompressedStream.Position:=0; 
      freemem(Buffer); 
    end; 

  • 相关阅读:
    1503: [NOI2004]郁闷的出纳员
    2049: [Sdoi2008]Cave 洞穴勘测
    2301: [HAOI2011]Problem b
    BZOJ 1923: [Sdoi2010]外星千足虫
    BZOJ 2115: [Wc2011] Xor
    POJ 1830 开关问题
    欧拉函数基础
    BZOJ 2186 沙拉公主的困惑
    POJ 1845
    逆元基础知识整理
  • 原文地址:https://www.cnblogs.com/yych/p/1901408.html
Copyright © 2011-2022 走看看