我希望能够根据ASCII十进制表将数字转换为文本

时间:2011-09-28 15:11:17

标签: java string parseint

我正在努力使它能够采用单个三字符子串并在条件长度为3的倍数的条件下将它们转换为整数。分配的子串被转换成的整数应该作为包含ASCII表的所有打印字符的数组中的相对位置。

 String IntMessage = result.toString();
   if 
   {
   (IntMessage.substring(0,1)=="1" && IntMessage.length()%3==0)
       for(j=0;j < IntMessage.length()-2;j += 3)
           n = Integer.parseInt(IntMessage.substring(j,j+3));
           mess += ASCII[n-32];
       return mess;

在其他条件下,该方法应该取String的前两个字符并将它们初始化为变量i。在这种情况下,变量mess被初始化为ASCII数组中的索引为i-32的字符。然后有一个for循环,它接受剩余的字符并将它们分成三位数的子字符串,然后根据它们在ASCII数组中的相应位置将它们转换成字符串。此数组中的String变量会不断添加到变量mess中,以便获取IntMessage字符串的BigInteger到String转换。

   int i = Integer.parseInt(IntMessage.substring(0,2));

   mess=ASCII[i-32];
           for(l=2; l< IntMessage.length() - 2; l+=3)
               r = Integer.parseInt(IntMessage.substring(l,l+3));
               mess+=ASCII[r-32];
   return mess;

由于某种原因,该方法无效,我想知道我是否做错了什么。我知道如何获取输入字符串并将其转换为一系列数字,但我也想做相反的事情。无论如何你有帮助吗?

1 个答案:

答案 0 :(得分:1)

根据您的描述,您可以使用以下方法:

String fromIntMessage(String msg) {
    StringBuilder result = new StringBuilder();
    for (int x = (msg.length() % 3 - 3) % 3; x < msg.length(); x += 3) {
        int chr = Integer.parseInt(msg.substring(Math.max(x, 0), x + 3));
        result.append(Character.toString((char) (chr - 32)));
    }
    return result.toString();
}

String toIntMessage(String string) {
    StringBuilder result = new StringBuilder();
    for (char c : string.toCharArray()) {
        result.append(String.format("%03d", c + 32));
    }
    return result.charAt(0) == '0' ? result.substring(1) : result.toString();
}

会给你

toIntMessage("DAA")             // => "100097097"
fromIntMessage("100097097")     // => "DAA"