开发者

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

开发者 https://www.devze.com 2023-04-08 20:30 出处:网络
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

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 开发者_Python百科= 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"
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号