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

时间:2013-10-11 00:24:25

标签: 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;
    }

result将是8011411110311497109109105110103。我知道

    P = 80
    r = 114
    o = 111
    g = 103
    r = 114
    a = 97
    m = 109
    m = 109
    i = 105
    n = 110
    g = 103

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

1 个答案:

答案 0 :(得分:1)

你需要做的是假设每个数字位于'A'到'Z'之间,(65到90)或'a'到'z'(97到122)

  1. 通过致电substring()
  2. 获取前2位数字
  3. 通过转换为数字类型来检查它们是否位于上述范围内
    • 如果他们这样做,那么继续循环
  4. 否则获取第三位数并检查
  5. 如果你可以将它填充到三位数就会更简单,这样你就会知道每三个数字形成一个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);
    }
    

    注意如果您将测试更改为num>25,那么它将适用于所有来自26的ASCII值:对于值26到99,它会将其解释为具有2位数正确地说,对于从100到255的值,它只会查看前2位数字,因此它们将被视为10-25,并将被解释为3位数字