user969334
user969334

Reputation: 53

BigInteger to String according to ASCII

Is there a way to convert a series of integers to a String according to the ASCII table. I want to take the ASCII value of a String and convert it back to a String. For example,

97098097=> "aba"

I really need an effective way of taking an integer and converting it to a String according to its ASCII value. This method must also take into account the fact that there is no zero in front of the '9' when the String "aba" has an ASCII value of 97098097 as 'a' has an ASCII value of 097 and a String "dee" has one of 100101101. This means that not every number will have an ASCII value that has a number of digits that is a multiple of three.

If you have any misunderstandings of what I'm trying to do please let me know.

Upvotes: 0

Views: 2299

Answers (2)

user207421
user207421

Reputation: 310957

No lookup table required.

    while (string.length() % 3 != 0)
    {
        string = '0' + string;
    }
    String result = "";
    for (int i = 0; i < string.length(); i += 3)
    {
        result += (char)(Integer.parseInt(string.substring(i, i + 3)));
    }

Upvotes: 1

jbranchaud
jbranchaud

Reputation: 6087

First, I would create some sort of lookup table in your code with all the ascii values and their String equivalent. Then take the big int and convert it to a String. Then do the mod of 3 with the length of your bigint string to determine if you need to add 1, 2, or no 0's to the front of it. Then just grab every 3 integers from the front of the number, compare it to the lookup table, and append the corresponding value to your result string.

Example:

Given 97098097 You would convert it to: "97098097"

Then you do a mod with 3 resulting in a value of 1, so 1 zero needs to be added.

Append 1 zero: "097098097"

Then grab every 3 from the front and compare to look up table:

097 -> a, so result += "a"

098 -> b, so result += "b"

097 -> a, so result += "a"

You end with result being "aba"

Upvotes: 0

Related Questions