您的位置:首页 > 编程语言 > Java开发

Java 字符串,byte[],16进制的字符串互转

2011-06-09 18:02 197 查看

Java 字符串,byte[],16进制的字符串互转

学习笔记 2010-11-26 11:26:45 阅读146 评论0 字号:大中小 订阅

转:http://doggou.javaeye.com/blog/213771

/**

* 字符串转换成十六进制字符串

*/

p lic static String str2HexStr(String str) {

char[] chars = "0123456789ABCDEF".toCharArray();

StringBuilder sb = new StringBuilder("");

byte[] bs = str.getBytes();

int bit;

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]);

}

return sb.toString();

}

/**

* 十六进制转换字符串

*/

p lic static String hexStr2Str(String hexStr) {

String str = "0123456789ABCDEF";

char[] hexs = hexStr.toCharArray();

byte[] bytes = new byte[hexStr.length() / 2];

int n;

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 new String(bytes);

}

/**
* bytes转换成十六进制字符串
*/
p lic static String byte2HexStr(byte[] b) {
String hs="";
String stmp="";
for (int n=0;n<b.length;n++) {
stmp=(Integer.toHexString(b
& 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
//if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}

private static byte uniteBytes(String src0, String src1) {
byte b0 = Byte.decode("0x" + src0).byteVal();
b0 = (byte) (b0 << 4);
byte b1 = Byte.decode("0x" + src1).byteVal();
byte ret = (byte) (b0 | b1);
return ret;
}

/**
* bytes转换成十六进制字符串
*/
p lic 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] = uniteBytes(src.s string(i*2, m),src.s string(m,n));
}
return ret;
}

/**
*String的字符串转换成unicode的String
*/
p lic static String stringToUnicode(String strText) throws Exception {
char c;
String strRet = "";
int intAsc;
String strHex;
for (int i = 0; i < strText.length(); i++) {
c = strText.charAt(i);
intAsc = (int) c;
strHex = Integer.toHexString(intAsc);
if (intAsc > 128) {
strRet += "//u" + strHex;
} else {
// 低位在前面补00
strRet += "//" + strHex;
}
}
return strRet;
}
/**
*unicode的String转换成String的字符串
*/
p lic static String unicodeToString(String hex) {
int t = hex.length() / 6;
StringBuilder str = new StringBuilder();
for (int i = 0; i < t; i++) {
String s = hex.s string(i * 6, (i + 1) * 6);
// 高位需要补上00再转
String s1 = s.s string(2, 4) + "00";
// 低位直接转
String s2 = s.s string(4);
// 将16进制的string转为int
int n = Integer.valOf(s1, 16) + Integer.valOf(s2, 16);
// 将int转换为字符
char[] chars = Character.toChars(n);
str.append(new String(chars));
}
return str.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: