我想要转换为可读字符串的这个十六进制ffeeddcc
。
我正在使用在线转换器来做到这一点。
部分转换器完全不转换(http://chxo.com/scripts/hex2string.php),有些转换器产生ÿîÝÌ
(http://www.string-functions.com/hex-string.aspx)
有什么想法吗?
答案 0 :(得分:2)
您可以尝试的简单方法是:
String h = "ffeeddcc";
byte[] b = Hex.decodeHex(h.toCharArray());
System.out.println(new String(b, "UTF-8"));
另请参阅 Hex
另一种方法
public String convertHexToString(String hex){
StringBuilder sb = new StringBuilder();
StringBuilder temp = new StringBuilder();
//796f755f6172655f616e5f6964696f74 split into two characters 79, 6f, 75...
for( int i=0; i<hex.length()-1; i+=2 ){
String output = hex.substring(i, (i + 2));
int decimal = Integer.parseInt(output, 16);
sb.append((char)decimal);
temp.append(decimal);
}
System.out.println(temp.toString());
return sb.toString();
}
修改强>
正如piet所说,我确认那些不是标准的ASCII码,因此你得到了这个问题。如果您将使用标准ASCII代码,它将起作用。
答案 1 :(得分:1)
使用普通Java的可能实现。
StringBuilder sb = new StringBuilder("796f755f6172655f616e5f6964696f74");
while (sb.length() >= 2) {
System.out.print((char)Integer.parseInt(sb.substring(0, 2), 16));
sb.delete(0, 2);
}
实施非常幼稚,意味着有优化的地方。