• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

java 实现PHP gzcompress 功能

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为了直观加了base64 

PHP 代码:

<?php
$a = gzcompress("abc");
echo base64_encode($a); 
//输出: eJxLTEoGAAJNASc=
解码:gzuncompress();

源码提示默认使用的是 zlib的  deflate 进行编码的;

function gzcompress ($data, $level = -1, $encoding = ZLIB_ENCODING_DEFLATE) {}

 

对应的 JAVA处理代码 (JDK1.8):

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Base64;
import java.util.zip.Deflater;
import java.util.zip.Inflater;

public class GzCompress{
    public static void main(String[] args) {

        String encodeCompressd  = "eJxLTEoGAAJNASc=";
        byte[] compressd = Base64.getDecoder().decode( encodeCompressd );
        String origin  = new String( decompress(compressd) );
        System.out.println("origin: "+origin);
        byte[] _compressd = compress(origin.getBytes());
        byte[] _encodeCompress = Base64.getEncoder().encode(_compressd);
        System.out.println(new String(_encodeCompress));
    }

    public static byte[] decompress(byte[] data)  {

        byte[] output = new byte[0];

        Inflater decompresser = new Inflater();
        decompresser.reset();
        decompresser.setInput(data);

        ByteArrayOutputStream o = new ByteArrayOutputStream(data.length);
        try {
            byte[] buf = new byte[1024];
            while (!decompresser.finished()) {
                int i = decompresser.inflate(buf);
                o.write(buf, 0, i);
            }
            output = o.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                o.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        decompresser.end();
        return output;
    }

    public static byte[] compress( byte[] bytes ){

        byte[] output = new byte[1024];
        Deflater compresser = new Deflater();
        compresser.setInput(bytes);
        compresser.finish();
        int compressedDataLength = compresser.deflate(output);
        return Arrays.copyOf(output,compressedDataLength);
    }
}

对应输出:

origin: abc
compressLength:11
eJxLTEoGAAJNASc=


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java 调用PHP的Web Service(三)发布时间:2022-07-10
下一篇:
【转】java,php,javaScript中的回调函数的实现发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap