①通用方法:
/**
* @Description: 十进制字符串转16进制字符串
* @Param:
* @return:
* @Author: lsa
* @Date: 2021/4/29
*/
public static String hexString(String str) {
String ret = "";
byte[] b;
try {
// b = str.getBytes("GB2312");
b = str.getBytes("UTF-8");//这里也支持其他格式
for (int i = b.length - 1; i >= 0; i--) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return ret;
}
②通用方法:
/**
* @Description: 十六进制字符串转byte[]数组
* @Param:
* @return:
* @Author: lsa
* @Date: 2021/4/29
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static int toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}