java模拟PHP的pack和unpack类
本文实例为大家分享了java模拟PHP的pack和unpack类的具体代码,供大家参考,具体内容如下
packageqghl.intp.util; importjava.io.IOException; importjava.io.InputStream; publicclassPackUtil{ /** *打包字符串 *类似php中pack在java中的实现 * *@paramstr *@return */ publicstaticbyte[]pack(Stringstr){ intnibbleshift=4; intposition=0; intlen=str.length()/2+str.length()%2; byte[]output=newbyte[len]; for(charv:str.toCharArray()){ byten=(byte)v; if(n>='0'&&n<='9'){ n-='0'; }elseif(n>='A'&&n<='F'){ n-=('A'-10); }elseif(n>='a'&&n<='f'){ n-=('a'-10); }else{ continue; } output[position]|=(n<<nibbleshift); if(nibbleshift==0){ position++; } nibbleshift=(nibbleshift+4)&7; } returnoutput; } /** *16进制的字符解压类php中unpack * *@paramis *@paramlen *@return *@throwsIOException */ publicstaticStringunpack(InputStreamis,intlen)throwsIOException{ byte[]bytes=newbyte[len]; is.read(bytes); returnunpack(bytes); } /*** *16进制的字符解压类php中unpack *@parambytes *@return */ publicstaticStringunpack(byte[]bytes){ StringBuilderstringBuilder=newStringBuilder(""); if(bytes==null||bytes.length<=0){ returnnull; } for(inti=0;i<bytes.length;i++){ intv=bytes[i]&0xFF; Stringhv=Integer.toHexString(v); if(hv.length()<2){ stringBuilder.append(0); } stringBuilder.append(hv); } returnstringBuilder.toString(); } }
以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。