天天看点

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

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

java jzip压缩代码如下

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 {

public static function myGzencode($str){

$res = gzencode($str);

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

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

return $res;

}

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