Java十六进制到ASCII转换,用于循环和其他所需信息

Java十六进制到ASCII转换,用于循环和其他所需信息,java,for-loop,hex,Java,For Loop,Hex,我试图让我的程序以类似这样的方式输出,这是十六进制到ASCII或字符转换。只是需要帮助。请告诉我我的for循环什么时候出错 Please enter the string to convert: a+b%3A4865792074686973206973206a7573742061207072616374696365 a b:Hey this is just a practice 但我得到以下信息:( 这是我的密码 public class Unmangle { public st

我试图让我的程序以类似这样的方式输出,这是十六进制到ASCII或字符转换。只是需要帮助。请告诉我我的for循环什么时候出错

Please enter the string to convert:  
a+b%3A4865792074686973206973206a7573742061207072616374696365
a b:Hey this is just a practice
但我得到以下信息:(

这是我的密码

public class Unmangle {

    public static void main(String[] args) {

        Scanner webinput = new Scanner(System.in);

        System.out.println("Please enter the string to convert: ");
        String input = webinput.nextLine();
        Unmangle.Unmangler(input);
        String result = Unmangle.Unmangler(input);
        System.out.println(result);

    }

    // For example, unmangle("a+b%3A") should return "a b:".

    public static String Unmangler(String input) {

        // if(input.contains("%"))
        int place = input.indexOf("%");
        StringBuilder outputbuild = new StringBuilder();
        StringBuilder S;

        for (int i = place; i < input.length(); i += 2) {
            String output = input.substring(place + 1, place + 3);
            outputbuild.append((char) Integer.parseInt(output, 16));
        }

        String result = input.replace("+", " ") + outputbuild;

        return result;
    }

}
公共类解缠结{
公共静态void main(字符串[]args){
扫描仪webinput=新扫描仪(System.in);
System.out.println(“请输入要转换的字符串:”);
字符串输入=webinput.nextLine();
解缠结。解缠结器(输入);
字符串结果=Unmangle.Unmangler(输入);
系统输出打印项次(结果);
}
//例如,解缠结(“a+b%3A”)应返回“a b:”。
公共静态字符串解缠结器(字符串输入){
//if(input.contains(“%”)
int place=input.indexOf(“%”);
StringBuilder outputbuild=新建StringBuilder();
架线工;
for(int i=place;i
  • for
    循环中,需要从
    %
    之后的下一个字母开始

    for (int i = place + 1; i < input.length(); i += 2) {
    //           ^^^^^^^^^ 
    
  • 最后一个更改是在将
    %
    替换为空格并包含解码字符串之前,仅获取
    %
    之前的部分(包括它)

    String result = input.substring(0, place + 1).replace("+", " ") + outputbuild;
    
  • 因此,请尝试将
    解纠缠器
    方法更改为

    public static String unmangler(String input) {
    
        StringBuilder outputbuild = new StringBuilder();
    
        int place = input.indexOf("%");
        for (int i = place + 1; i < input.length(); i += 2) 
            outputbuild.append((char) Integer.parseInt(input.substring(i , i + 2), 16));
    
        return input.substring(0, place + 1).replace("+", " ") + outputbuild;
    }
    
    公共静态字符串解缠器(字符串输入){
    StringBuilder outputbuild=新建StringBuilder();
    int place=input.indexOf(“%”);
    对于(int i=place+1;i
    我不想让这成为一个对立的答案。只是我还没有足够的声誉发表评论,而且上面的答案缺少一个方面,那就是在for循环中,你需要I
    String result = input.substring(0, place + 1).replace("+", " ") + outputbuild;
    
    public static String unmangler(String input) {
    
        StringBuilder outputbuild = new StringBuilder();
    
        int place = input.indexOf("%");
        for (int i = place + 1; i < input.length(); i += 2) 
            outputbuild.append((char) Integer.parseInt(input.substring(i , i + 2), 16));
    
        return input.substring(0, place + 1).replace("+", " ") + outputbuild;
    }