java .$gzip,php还原java中gzip压缩方法

有个需求,要把java代码里面的jzip压缩方法还原成php

java jzip压缩代码如下

/***

* 压缩GZip

*

* @param data

* @return

*/

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

byte[] b = null;

try {

ByteArrayOutputStream bos = new ByteArrayOutputStream();

GZIPOutputStream gzip = new GZIPOutputStream(bos);

gzip.write(data);

gzip.finish();

gzip.close();

b = bos.toByteArray();

bos.close();

} catch (Exception ex) {

ex.printStackTrace();

}

return b;

}

php代码

class {

/*

* 把字符串进行gzip压缩,并转换成byte数组

* @param $str 需要进行压缩的字符串

* @param $bytes 目标byte数组

*/

public static function myGzencode($str){

$res = gzencode($str);

$res = self::getBytes($res);

$res[9] = 0; //这步完全是为了和java压缩后的头部保持一致,也许是个坑

return $res;

}

/*

* 转换一个String字符串为byte数组

* @param $str 需要转换的字符串

* @param $bytes 目标byte数组

* @author Zikie

*/

public static function getBytes($str) {

$len = strlen($str);

$bytes = array();

for($i=0;$i

if(ord($str[$i]) >= 128){

$byte = ord($str[$i]) - 256;

}else{

$byte = ord($str[$i]);

}

$bytes[] = $byte ;

}

return $bytes;

}

}

ps:https://tools.ietf.org/html/rfc1952#section-2.2

同学给推荐了这边文章,如下内容

0 - FAT filesystem (MS-DOS, OS/2, NT/Win32)

1 - Amiga

2 - VMS (or OpenVMS)

3 - Unix

4 - VM/CMS

5 - Atari TOS

6 - HPFS filesystem (OS/2, NT)

7 - Macintosh

8 - Z-System

9 - CP/M

10 - TOPS-20

11 - NTFS filesystem (NT)

12 - QDOS

13 - Acorn RISCOS

255 - unknown

我压缩后转换成byte数组,第九位是11,java那边是0,可能我的文件系统是NTFS filesystem (NT),java可能是FAT filesystem (MS-DOS, OS/2, NT/Win32)

分类:

程序积累

/

浏览量:  1722

2017-1-5 17:52 Thursday

昵称

邮件地址 (选填)

个人主页 (选填)

评论内容

发表评论

send

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值