62,614
社区成员
发帖
与我相关
我的任务
分享
public static String string2HexString(String str, String charName) {
char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes(Charset.forName(charName));
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();
}
public static String Hex2String(String source, String charName) throws Exception {
source = source.toUpperCase();
int sourceLen = source.length();
char[] sourcechars = source.toCharArray();
String hexDigital = "0123456789ABCDEF";
byte[] resultBytes = new byte[(sourceLen) / 2];
//3 循环老的字符串 依次将2位转成1位
int n;
for (int i = 0; i < resultBytes.length; i++) {
n = hexDigital.indexOf(sourcechars[i * 2]) * 16 + hexDigital.indexOf(sourcechars[2 * i + 1]);
resultBytes[i] = (byte) (n & 0xff);
}
return new String(resultBytes, Charset.forName(charName));
}
public static void main(String[] args) throws Exception {
String hexStr = BytesUtil.string2HexString("冷库房12", "gbk");
System.out.println(hexStr);
String oldStr = BytesUtil.Hex2String(hexStr, "gbk");
System.out.println("获得原始值为:" + oldStr);
}