转自:http://blog.csdn.net/hzbigdog/article/details/6877712, 留作备用。
- /**
- * 字符串转换成十六进制字符串
- * @param String str 待转换的ASCII字符串
- * @return String 每个Byte之间空格分隔,如: [61 6C 6B]
- */
- public 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]);
- sb.append(' ');
- }
- return sb.toString().trim();
- }
/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]
*/
public 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]);
sb.append(' ');
}
return sb.toString().trim();
}
- /**
- * 十六进制转换字符串
- * @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
- * @return String 对应的字符串
- */
- public 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);
- }
/**
* 十六进制转换字符串
* @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
* @return String 对应的字符串
*/
public 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转换成十六进制字符串
- * @param byte[] b byte数组
- * @return String 每个Byte值之间空格分隔
- */
- public static String byte2HexStr(byte[] b)
- {
- String stmp="";
- StringBuilder sb = new StringBuilder("");
- for (int n=0;n<b.length;n++)
- {
- stmp = Integer.toHexString(b[n] & 0xFF);
- sb.append((stmp.length()==1)? "0"+stmp : stmp);
- sb.append(" ");
- }
- return sb.toString().toUpperCase().trim();
- }
/**
* 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<b.length;n++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length()==1)? "0"+stmp : stmp);
sb.append(" ");
}
return sb.toString().toUpperCase().trim();
}
- /**
- * bytes字符串转换为Byte值
- *
- * @param String
- * src Byte字符串,每个Byte之间没有分隔符
- * @return byte[]
- */
- public static byte[] hexStr2Bytes(String src) {
- String[] src_sp = src.split(" ");
- byte[] ret = new byte[src_sp.length];
- for (int i = 0; i < src_sp.length; i++) {
- ret[i] = Byte.decode("0x" + src_sp[i]);
- }
- return ret;
- }
/**
* bytes字符串转换为Byte值
*
* @param String
* src Byte字符串,每个Byte之间没有分隔符
* @return byte[]
*/
public static byte[] hexStr2Bytes(String src) {
String[] src_sp = src.split(" ");
byte[] ret = new byte[src_sp.length];
for (int i = 0; i < src_sp.length; i++) {
ret[i] = Byte.decode("0x" + src_sp[i]);
}
return ret;
}