java 将整数字符串转换为可能的 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;
    }

结果将为8011411110311497109109105110103。我知道

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

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

最佳答案

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

  1. 通过调用 substring() 获取前 2 位数字
  2. 通过转换为数字类型来检查它们是否在上述范围内
    • 如果这样做,则继续循环
  3. 否则获取第三位数字并检查

如果你可以将其填充为三位数字,这样你就会知道每三个数字组成一个 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 到 99 的所有 ASCII 值:对于值 26 到 99,它将解释它们正确地具有 2 位数字,对于从 100 到 255 的值,它只会查看前 2 位数字,因此它们将被视为 10-25,并将被解释为 3 位数字长

关于java 将整数字符串转换为可能的 ASCII 字符组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19308356/

相关文章:

java - hql 查询中的空集合参数

java - Titan 节点未启动

java - 使用 `when` 作为验证

string - Boost 中的 wstring 字符串转换器

c++ - 在 C++ 中迭代流后返回到流的开头

python - str.replace 从 pandas DataFrame 的后面开始

java - 在字符串中,如何分离并存储字符和整数?

java - 对需要频繁更新的应用使用JSP热部署

string - UTF-32 和 UCS-4 有什么区别?

c++ - 将 const char* 传递给方法,但得到 char const * 错误