public class HexUtils {
public static void main(String[] args) throws Exception{
String mmm = "安全帽检测NEW";
String eeew = "192.168.1.13-0";
String bbbb = "895B68513D5EC0684B6D4E0045005700";
String ccccc = "3100390032002E003100360038002E0031002E00310033002D003000";
String chatset = "UTF-16LE";//UTF-8//GBK//Unicode//UTF-16LE
//编码
String aaa = string2HexUTF16LE(mmm);
System.out.println(aaa);
//解码
String wqqqq = hexUTF16LE2String(bbbb);
System.out.println(wqqqq);
}
/**
* @Title:bytes2HexString
* @Description:字节数组转16进制字符串
* @param b
* 字节数组
* @return 16进制字符串
* @throws
*/
public static String bytes2HexString(byte[] b) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < b.length; i++) {
result.append(String.format("%02X",b[i]));
}
return result.toString();
}
/**
* @Title:hexString2Bytes
* @Description:16进制字符串转字节数组
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static byte[] hexString2Bytes(String src) {
int l = src.length() / 2;
byte[] ret = new byte[l];
for (int i = 0; i < l; i++) {
ret[i] = Integer.valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue();
}
return ret;
}
/**
* @Title:string2HexUTF8
* @Description:字符UTF8串转16进制字符串
* @param strPart
* 字符串
* @return 16进制字符串
* @throws
*/
public static String string2HexUTF8(String strPart) {
return string2HexString(strPart,"UTF-8");
}
/**
* @Title:string2HexUTF8
* @Description:字符UTF-16LE串转16进制字符串,此UTF-16LE等同于C#中的Unicode
* @param strPart
* 字符串
* @return 16进制字符串
* @throws
*/
public static String string2HexUTF16LE(String strPart) {
return string2HexString(strPart,"UTF-16LE");
}
/**
* @Title:string2HexUnicode
* @Description:字符Unicode串转16进制字符串
* @param strPart
* 字符串
* @return 16进制字符串
* @throws
*/
public static String string2HexUnicode(String strPart) {
return string2HexString(strPart,"Unicode");
}
/**
* @Title:string2HexGBK
* @Description:字符GBK串转16进制字符串
* @param strPart
* 字符串
* @return 16进制字符串
* @throws
*/
public static String string2HexGBK(String strPart) {
return string2HexString(strPart,"GBK");
}
/**
* @Title:string2HexString
* @Description:字符串转16进制字符串
* @param strPart 字符串
* @param tochartype hex目标编码
* @return 16进制字符串
* @throws
*/
public static String string2HexString(String strPart,String tochartype) {
try{
return bytes2HexString(strPart.getBytes(tochartype));
}catch (Exception e){
return "";
}
}
///////////////////////////////////////////////////
/////////////////////////////////////////////////
/**
* @Title:hexUTF82String
* @Description:16进制UTF-8字符串转字符串
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static String hexUTF82String(String src) {
return hexString2String(src,"UTF-8","UTF-8");
}
/**
* @Title:hexUTF16LE2String
* @Description:16进制UTF-8字符串转字符串,,此UTF-16LE等同于C#中的Unicode
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static String hexUTF16LE2String(String src) {
return hexString2String(src,"UTF-16LE","UTF-8");
}
/**
* @Title:hexGBK2String
* @Description:16进制GBK字符串转字符串
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static String hexGBK2String(String src) {
return hexString2String(src,"GBK","UTF-8");
}
/**
* @Title:hexUnicode2String
* @Description:16进制Unicode字符串转字符串
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static String hexUnicode2String(String src) {
return hexString2String(src,"Unicode","UTF-8");
}
/**
* @Title:hexString2String
* @Description:16进制字符串转字符串
* @param src
* 16进制字符串
* @return 字节数组
* @throws
*/
public static String hexString2String(String src,String oldchartype, String chartype) {
byte[] bts=hexString2Bytes(src);
try{if(oldchartype.equals(chartype))
return new String(bts,oldchartype);
else
return new String(new String(bts,oldchartype).getBytes(),chartype);
}
catch (Exception e){
return"";
}
}
}
来源:https://blog.csdn.net/caodongfang126/article/details/99676571