有个需求,要把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<$len;$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)