且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Java中将十六进制字符串转换为ASCII

更新时间:2022-11-16 15:09:44

只需使用for循环来通过每个字符在字符串中,将它们转换为字符,然后在字符串构建器的末尾敲击字符:

  public static void main (字串[] args){
字符串十六进制= 75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000;
StringBuilder输出= new StringBuilder();
for(int i = 0; i< hex.length(); i + = 2){
String str = hex.substring(i,i + 2);
output.append((char)Integer.parseInt(str,16));
}
System.out.println(输出);
}

这给出了几行从以下开始的行:


uTorrent \Completed\\\
fsuc_ost_by_mustang\Pendulum-9,000 Miles.mp3



嗯......: - )

I hope this isn't too much of a stupid question, I have looked on 5 different pages of Google results but haven't been able to find anything on this.

What I need to do is convert a string that contains all Hex characters into ASCII for example

String fileName = 

75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000

Every way I have seen makes it seems like you have to put it into an array first. Is there no way to loop through each two and convert them?

Just use a for loop to go through each couple of characters in the string, convert them to a character and then whack the character on the end of a string builder:

public static void main(String[] args) {
    String hex = "75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000";
    StringBuilder output = new StringBuilder();
    for (int i = 0; i < hex.length(); i+=2) {
        String str = hex.substring(i, i+2);
        output.append((char)Integer.parseInt(str, 16));
    }
    System.out.println(output);
}

This gives a few lines starting with the following:

uTorrent\Completed\nfsuc_ost_by_mustang\Pendulum-9,000 Miles.mp3

Hmmm... :-)