java模擬PHP的pack和unpack類(lèi)
更新時(shí)間:2016年04月13日 15:36:40 作者:Wanes
這篇文章主要介紹了java模擬PHP的pack和unpack類(lèi)的相關(guān)資料,需要的朋友可以參考下
本文實(shí)例為大家分享了java模擬PHP的pack和unpack類(lèi)的具體代碼,供大家參考,具體內(nèi)容如下
package qghl.intp.util;
import java.io.IOException;
import java.io.InputStream;
public class PackUtil{
/**
* 打包字符串
* 類(lèi)似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)制的字符解壓 類(lèi)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)制的字符解壓 類(lèi)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();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。
相關(guān)文章
用PHP中的 == 運(yùn)算符進(jìn)行字符串比較
用PHP中的 == 運(yùn)算符進(jìn)行字符串比較...2006-11-11
今天你說(shuō)520了嗎?不僅有php表白書(shū)還有java表白神器
程序員的表白情書(shū)是怎么樣的?程序員的表白是怎么樣的,其實(shí)表白很簡(jiǎn)單,只要大聲喊出“520”,行動(dòng)吧2016-05-05
php使用環(huán)形鏈表解決約瑟夫問(wèn)題完整示例
這篇文章主要介紹了php使用環(huán)形鏈表解決約瑟夫問(wèn)題,簡(jiǎn)單描述了約瑟夫問(wèn)題并結(jié)合實(shí)例形式分析了php基于環(huán)形鏈表解決約瑟夫問(wèn)題的相關(guān)操作技巧,注釋中包含較為詳盡的說(shuō)明便于理解,需要的朋友可以參考下2018-08-08
php mysql_list_dbs()函數(shù)用法示例
這篇文章主要介紹了php mysql_list_dbs()函數(shù)用法,簡(jiǎn)單介紹了mysql_list_dbs()函數(shù)的功能及列出mysql所有數(shù)據(jù)庫(kù)的實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03
解析百度搜索結(jié)果link?url=參數(shù)分析 (全)
自從9月后百度和360開(kāi)戰(zhàn)的結(jié)果就是 百度搜索結(jié)果的網(wǎng)址改變了,變成link?url=………這樣的重定向格式了??吹竭@樣的不友好的URL真有破解的沖動(dòng)。于是今天開(kāi)始試試破解它2012-10-10
網(wǎng)站用php實(shí)現(xiàn)paypal整合方法
雖然在中國(guó)paypal不是很流行,但如果把范圍擴(kuò)大到世界的話(huà),那paypal無(wú)疑就是老大了。2010-11-11

