如何将hexstring转换为Javastring

为了logging目的,一些其他人将日志转换为字节数组,然后转换为hexstring。 但是我想在java String中找回它,但是不能这样做,

日志文件中的hexstring看起来像

fd00000aa8660b5b010006acdc0100000101000100010000 

有人可以帮助解码吗?

提前致谢..

在Apache Commons中使用Hex

 String hexString = "fd00000aa8660b5b010006acdc0100000101000100010000"; byte[] bytes = Hex.decodeHex(hexString.toCharArray()); System.out.println(new String(bytes, "UTF-8")); 
 byte[] bytes = DatatypeConverter.parseHexBinary(hexString); String result= new String(bytes, encoding); 

首先读取数据,然后将其转换为字节数组:

  byte b = Byte.parseByte(str, 16); 

然后使用String构造函数:

 new String(byte[] bytes) 

或者如果字符集不是系统默认值,则:

 new String(byte[] bytes, String charsetName) 

试试下面的代码:

 public static byte[] decode(String hex){ String[] list=hex.split("(?<=\\G.{2})"); ByteBuffer buffer= ByteBuffer.allocate(list.length); System.out.println(list.length); for(String str: list) buffer.put(Byte.parseByte(str,16)); return buffer.array(); } 

要转换为String,只需使用decode方法返回byte []创build一个新的String。

您可以从String (hex)byte array String as UTF-8(?)确保你的hexstring没有前导空格和东西

 public static byte[] hexStringToByteArray(String hex) { int l = hex.length(); byte[] data = new byte[l/2]; for (int i = 0; i < l; i += 2) { data[i/2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i+1), 16)); } return data; } 

用法:

 String b = "0xfd00000aa8660b5b010006acdc0100000101000100010000"; byte[] bytes = hexStringToByteArray(b); String st = new String(bytes,StandardCharsets.UTF_8); System.out.println(st); 

另一种将hexstring转换为javastring的方式:

 public static String unHex(String arg) { String str = ""; for(int i=0;i<arg.length();i+=2) { String s = arg.substring(i, (i + 2)); int decimal = Integer.parseInt(s, 16); str = str + (char) decimal; } return str; }