十六进制到字符串转换不起作用

时间:2015-04-13 06:56:34

标签: java hex

我想要转换为可读字符串的这个十六进制ffeeddcc。 我正在使用在线转换器来做到这一点。

部分转换器完全不转换(http://chxo.com/scripts/hex2string.php),有些转换器产生ÿîÝÌhttp://www.string-functions.com/hex-string.aspx

有什么想法吗?

2 个答案:

答案 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);
 }

实施非常幼稚,意味着有优化的地方。