/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]*/
public staticString str2HexStr(String str)
{char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb= new StringBuilder("");byte[] bs =str.getBytes();intbit;for (int i = 0; i < bs.length; i++)
{
bit= (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit= bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}returnsb.toString().trim();
}/**
* 十六进制转换字符串
* @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
* @return String 对应的字符串*/
public staticString hexStr2Str(String hexStr)
{
String str= "0123456789ABCDEF";char[] hexs =hexStr.toCharArray();byte[] bytes = new byte[hexStr.length() / 2];intn;for (int i = 0; i < bytes.length; i++)
{
n= str.indexOf(hexs[2 * i]) * 16;
n+= str.indexOf(hexs[2 * i + 1]);
bytes[i]= (byte) (n & 0xff);
}return newString(bytes);
}/**
* bytes转换成十六进制字符串
* @param byte[] b byte数组
* @return String 每个Byte值之间空格分隔*/
public static String byte2HexStr(byte[] b)
{
String stmp="";
StringBuilder sb= new StringBuilder("");for (int n=0;n
{
stmp= Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length()==1)? "0"+stmp : stmp);
sb.append(" ");
}returnsb.toString().toUpperCase().trim();
}/**
* bytes字符串转换为Byte值
* @param String src Byte字符串,每个Byte之间没有分隔符
* @return byte[]*/
public static byte[] hexStr2Bytes(String src)
{int m=0,n=0;int l=src.length()/2;
System.out.println(l);byte[] ret = new byte[l];for (int i = 0; i < l; i++)
{
m=i*2+1;
n=m+1;
ret[i]= Byte.decode("0x" + src.substring(i*2, m) +src.substring(m,n));
}returnret;
}/**
* String的字符串转换成unicode的String
* @param String strText 全角字符串
* @return String 每个unicode之间无分隔符
* @throws Exception*/
public staticString strToUnicode(String strText)
throws Exception
{charc;
StringBuilder str= newStringBuilder();intintAsc;
String strHex;for (int i = 0; i < strText.length(); i++)
{
c=strText.charAt(i);
intAsc= (int) c;
strHex=Integer.toHexString(intAsc);if (intAsc > 128)
str.append("\\u" +strHex);else //低位在前面补00
str.append("\\u00" +strHex);
}returnstr.toString();
}/**
* unicode的String转换成String的字符串
* @param String hex 16进制值字符串 (一个unicode为2byte)
* @return String 全角字符串*/
public staticString unicodeToString(String hex)
{int t = hex.length() / 6;
StringBuilder str= newStringBuilder();for (int i = 0; i < t; i++)
{
String s= hex.substring(i * 6, (i + 1) * 6);//高位需要补上00再转
String s1 = s.substring(2, 4) + "00";//低位直接转
String s2 = s.substring(4);//将16进制的string转为int
int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);//将int转换为字符
char[] chars =Character.toChars(n);
str.append(newString(chars));
}returnstr.toString();
}