byte【】转 十六进制字符串
public static String bytes_String16(byte[] b) {
StringBuilder sb = new StringBuilder();
char[] HEXES = {
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'A', 'B',
'C', 'D', 'E', 'F'
};
boolean f = false;
for (byte b1 : b ){
if (b1 != 0){
f = true;
}
int a= b1 & 0xff;
// sb.append(String.format("%02x ", b1) );
sb.append(HEXES[(a >> 4) & 0x0F]);
sb.append(HEXES[a & 0x0F]);
// sb.append(" ");
}
if (f) {
return sb.toString();
}else {
return "";
}
}
十六进制字符串 转 byte【】
public static byte[] String16_bytes(String src) {
/*对输入值进行规范化整理*/
src = src.trim().replace(" ", "").toUpperCase(Locale.US);
//处理值初始化
int m = 0, n = 0;
int iLen = src.length() / 2; //计算长度
byte[] ret = new byte[iLen]; //分配存储空间
for (int i = 0; i < iLen; i++) {
m = i * 2 + 1;
n = m + 1;
ret[i] = (byte) (Integer.decode("0x" + src.substring(i * 2, m) + src.substring(m, n)) & 0xFF);
}
return ret;
}