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程序设计有所帮助。