简体   繁体   中英

I want to be able to convert numbers into text according to the ASCII decimal table

I am trying to make it so that I can take individual three-character substrings and convert them to integers under the conditions tht the length of the String is a multiple of three. The integers into which the partioned substrings are converted are supposed to function as relative positions in an array that contains all the printing characters of the ASCII table.

 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;

Under otherwise conditions, the method should take the first two characters of the String and initialize them to a variable i. In this case, the variable mess is initialized to the character in the ASCII array with an index of i-32. Then there is a for loop that takes the remaining characters and partitions them into three-digit substrings and they are taken and changed into strings according to their corresponding positions in the ASCII array. The String variables in this array are continuously added on to the the variable mess in order to get the BigInteger to String conversion of the IntMessage 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;

For some reason the method isn't working and I was wondering whether I was doing something wrong. I know how to take an input String and convert it into a series of numbers but I want to do the opposite also. Is there anyway you could help?

Based on your description you can use the following methods:

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();
}

which will give you

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM