Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java将整数字符串转换为ASCII字符的可能组合_Java_String_Char_Ascii - Fatal编程技术网

java将整数字符串转换为ASCII字符的可能组合

java将整数字符串转换为ASCII字符的可能组合,java,string,char,ascii,Java,String,Char,Ascii,说我有 String input = "Programming", result="\0"; int temp; for (int i=0;i<input.length();++i) { temp = input.charAt(i); result += temp; } 出于好奇,是否有可能以简单的方式逆转这个过程?您需要做的是假设每个数字位于“A”到“Z”(65到90)或“A”到“Z”(97到122)之间 通过调用subs

说我有

    String input = "Programming", result="\0";
    int temp;
    for (int i=0;i<input.length();++i) {
        temp = input.charAt(i);
        result += temp;
    }

出于好奇,是否有可能以简单的方式逆转这个过程?

您需要做的是假设每个数字位于“A”到“Z”(65到90)或“A”到“Z”(97到122)之间

  • 通过调用
    substring()
  • 通过转换为数字类型,检查这些值是否在上述范围内
    • 如果是,则继续循环
  • 否则,获取第三个数字并检查它
  • 如果您可以将其填充为三位数字,这样您就可以知道每三位数字构成一个ASCII字母,这会简单得多

    仅当为字母时有效的代码:

    public static void main(String[] args) {
         String toConvert= "8011411110311497109109105110103";
         String result="";
         while(toConvert.length()>0){
             String digits=toConvert.substring(0, 2);
             int num=Integer.valueOf(digits);
             if(('A'<=num&&num<='Z')||('a'<=num&&num<='z')){
                 toConvert=toConvert.substring(2);
             }
             else{
                 digits=toConvert.substring(0, 3);
                 num=Integer.valueOf(digits);
                 toConvert=toConvert.substring(3);
             }
             String letter = String.valueOf((char) num);
             result+=letter;
         }
         System.out.println(result);
    }
    
    publicstaticvoidmain(字符串[]args){
    字符串toConvert=“80111110311497109109105110103”;
    字符串结果=”;
    while(toConvert.length()>0){
    字符串数字=转换子字符串(0,2);
    int num=整数.valueOf(位数);
    
    如果((“A”假设你有
    123
    。应该是
    12
    +
    3
    还是
    1
    +
    23
    ?我不认为你可以,因为很难区分两个数字是一个字符还是三个数字:p是
    80
    ,但g是
    103
    。所以,你不知道是期望两位数/字符还是三位数/图表这就是我的原因当被问及是否有可能,以简单的方式,因为即使是一个短字符串也会产生如此多的可能性。您必须使用所有3位数字生成它,以便80将是080或十六进制(然后所有将是2个字符),然后您可以反转它
    public static void main(String[] args) {
         String toConvert= "8011411110311497109109105110103";
         String result="";
         while(toConvert.length()>0){
             String digits=toConvert.substring(0, 2);
             int num=Integer.valueOf(digits);
             if(('A'<=num&&num<='Z')||('a'<=num&&num<='z')){
                 toConvert=toConvert.substring(2);
             }
             else{
                 digits=toConvert.substring(0, 3);
                 num=Integer.valueOf(digits);
                 toConvert=toConvert.substring(3);
             }
             String letter = String.valueOf((char) num);
             result+=letter;
         }
         System.out.println(result);
    }