• java_zlib_资料


    1、网页资料

      1.1、http://bbs.csdn.net/topics/190020986

      1.2、

        http://cdn.verydemo.com/demo_c89_i166794.html

        http://blog.csdn.net/hexingyeyun/article/details/8678154

      1.3、

        http://www.lai18.com/content/2088054.html

        http://www.jb51.net/article/95073.htm

      1.4、Delphi external 使用 ?.obj中的函数:http://bbs.csdn.net/topics/60347700

    2、我的测试代码

      2.1、

    procedure TForm1.Button2Click(Sender: TObject);
    var cs :TCompressionStream;
        ms :TMemoryStream;
        pc :PChar;
        buffer :PCHar;
        i :integer;
    begin
      pc := 'Test123456';
      ms := TMemoryStream.Create;
      cs := TCompressionStream.Create(clMax, ms); // (clNone, clFastest, clDefault, clMax);
      cs.Write(pc[0], strlen(pc));
      cs.Free;
      Memo1.Lines.Add('-->'+inttostr(ms.size));
    
      GetMem(buffer, ms.size);
      ms.Read(buffer[0], ms.size);
    
      for i:=0 to ms.size do
        Memo1.Lines.Add(inttostr(integer(buffer[i])));
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    var
      zip: TVclZip;
      compr: string;
      data: PChar;
      txt :PChar;
      arr :array[0..256] of byte;
      iOut :integer;
      p :pointer;
      i :integer;
    begin
      txt := 'Test123456';
      iOut := 0;
      zip := TVclZip.Create(nil);
      for i:=0 to 17 do
        Memo1.Lines.Add(inttostr(integer(arr[i])));
        
      p := nil;
      zip.ZLibCompressBuffer(txt, strlen(txt), p, iOut);
      zip.Free;
    
      Memo1.Lines.Add('-->'+inttostr(iOut));
    
      for i:=0 to iOut-1 do
        Memo1.Lines.Add(inttostr(integer(PChar(p)[i])));
    end;

      2.2、

    package str;
    
    import java.io.ByteArrayOutputStream;
    import java.sql.ResultSet;
    import java.util.zip.DeflaterOutputStream;
    import java.util.zip.GZIPOutputStream;
    import java.util.zip.InflaterOutputStream;
    
    public class TstrTest
    {
        public static void main(String[] args) throws Exception
        {
    //        String str = "退出";
    //        
    //        byte[] bytesGBK = str.getBytes("gbk");
    //        for (int i=0; i<bytesGBK.length; i++)
    //            System.out.print(String.format("%02X ", bytesGBK[i]));
    //        System.out.println();
    //        
    //        byte[] bytesUTF8 = str.getBytes("utf-8");
    //        for (int i=0; i<bytesUTF8.length; i++)
    //            System.out.print(String.format("%02X ", bytesUTF8[i]));
            
            ByteArrayOutputStream bao = new ByteArrayOutputStream();
            //InflaterOutputStream ios = new InflaterOutputStream(bao);
            DeflaterOutputStream dos = new DeflaterOutputStream(bao);
            String str = "Test123456";
            dos.write(str.getBytes("iso-8859-1"));
            dos.close();
            byte[] bytes = bao.toByteArray();
            
            for (int i=0; i<bytes.length; i++)
                System.out.println(i+" : " + ((int)bytes[i] & 0xFF));
            //SevenZArchiveEntry ss;
            
            System.out.println();
            bytes = Compress(str.getBytes("iso-8859-1"));
            for (int i=0; i<bytes.length; i++)
                System.out.println(i+" : " + ((int)bytes[i] & 0xFF));
        }
        
        public static byte[] Compress(byte[] _bytes) throws Exception
        {
            if (_bytes == null || _bytes.length == 0)
                return null;
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            gzip.write(_bytes);
            gzip.close();
            return out.toByteArray();
        }
    }

        ZC: 仔细对比 java代码中 zlib和gzip 压缩出来的数据 其实是一样的,只是 头部&尾部不同而已,也印证了上面 网页资料1.3 中的说法

    3、

  • 相关阅读:
    读《ASP.NET Core3框架揭秘》之3&4~依赖注入
    读《ASP.NET Core3框架揭秘》之2~跨平台的奥秘
    读《ASP.NET Core3框架揭秘》之1~全新的开发体验
    C# 获取当前方法/父方法的信息
    Redis——集群(cluster)
    Redis——哨兵(sentinel)
    Redis——主从复制
    Redis——版本升级&数据迁移
    Redis——6.0集群安装部署
    Redis——常用命令
  • 原文地址:https://www.cnblogs.com/javaskill/p/6091559.html
Copyright © 2020-2023  润新知