java模擬PHP的pack和unpack類
本文實(shí)例為大家分享了java模擬PHP的pack和unpack類的具體代碼,供大家參考,具體內(nèi)容如下
package qghl.intp.util;
import java.io.IOException;
import java.io.InputStream;
public class PackUtil{
/**
* 打包字符串
* 類似php中pack在java中的實(shí)現(xiàn)
*
* @param str
* @return
*/
public static byte[] pack(String str) {
int nibbleshift = 4;
int position = 0;
int len = str.length() / 2 + str.length() % 2;
byte[] output = new byte[len];
for (char v : str.toCharArray()) {
byte n = (byte) v;
if (n >= '0' && n <= '9') {
n -= '0';
} else if (n >= 'A' && n <= 'F') {
n -= ('A' - 10);
} else if (n >= 'a' && n <= 'f') {
n -= ('a' - 10);
} else {
continue;
}
output[position] |= (n << nibbleshift);
if (nibbleshift == 0) {
position++;
}
nibbleshift = (nibbleshift + 4) & 7;
}
return output;
}
/**
* 16進(jìn)制的字符解壓 類php中unpack
*
* @param is
* @param len
* @return
* @throws IOException
*/
public static String unpack(InputStream is, int len) throws IOException {
byte[] bytes = new byte[len];
is.read(bytes);
return unpack(bytes);
}
/***
* 16進(jìn)制的字符解壓 類php中unpack
* @param bytes
* @return
*/
public static String unpack(byte[] bytes) {
StringBuilder stringBuilder = new StringBuilder("");
if (bytes == null || bytes.length <= 0) {
return null;
}
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
}
以上就是本文的全部內(nèi)容,希望對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。
相關(guān)文章
關(guān)于初學(xué)PHP時(shí)的知識(shí)積累總結(jié)
本篇文章筆者初學(xué)PHP時(shí)的一些知識(shí)積累經(jīng)驗(yàn),需要的朋友參考下2013-06-06
詳解php魔術(shù)方法(Magic methods)的使用方法
有些東西如果不是經(jīng)常使用,很容易忘記,比如魔術(shù)方法和魔術(shù)常量,這篇文章主要介紹了php魔術(shù)方法(Magic methods)的使用方法,感興趣的小伙伴們可以參考一下2016-02-02
使用純php代碼實(shí)現(xiàn)頁面?zhèn)戊o態(tài)的方法
這篇文章主要介紹了使用純php代碼實(shí)現(xiàn)頁面?zhèn)戊o態(tài)的方法,涉及php服務(wù)器預(yù)定義變量及正則匹配的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
PHP實(shí)現(xiàn)針對(duì)日期,月數(shù),天數(shù),周數(shù),小時(shí),分,秒等的加減運(yùn)算示例【基于strtotime】
這篇文章主要介紹了PHP實(shí)現(xiàn)針對(duì)日期,月數(shù),天數(shù),周數(shù),小時(shí),分,秒等的加減運(yùn)算,結(jié)合實(shí)例形式分析了基于strtotime的簡(jiǎn)單日期時(shí)間運(yùn)算技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04
PHP+apc+ajax實(shí)現(xiàn)的ajax_upload上傳進(jìn)度條代碼
這篇文章主要介紹了PHP+apc+ajax實(shí)現(xiàn)的ajax_upload上傳進(jìn)度條代碼,詳細(xì)分析了apc模塊的安裝、設(shè)置及ajax調(diào)用實(shí)現(xiàn)上傳進(jìn)度條功能,需要的朋友可以參考下2016-01-01

