[英]Hex to String conversion does not work
我有此十六进制ffeeddcc
,我想将其转换为可读的字符串。 我正在使用在线转换器来做到这一点。
有些转换器根本不进行转换( http://chxo.com/scripts/hex2string.php ),而某些转换器会产生( ÿîÝÌ
: //www.string-functions.com/hex-string.aspx )
有任何想法吗 ?
您可以尝试的简单方法是:
String h = "ffeeddcc";
byte[] b = Hex.decodeHex(h.toCharArray());
System.out.println(new String(b, "UTF-8"));
另请参阅十六进制
另一种方法
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码,它将起作用。
用纯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);
}
该实现非常幼稚,这意味着有优化的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.