Konwersja String (dowolne ASCII) => Integer ?

0

Mam następujący ciąg znaków

String temp = ("ala ma kota");

potrzebuję ten string przerobić na integer, tak aby później móc z tej wartości odtworzyć tekst czyli coś w stylu:

"Ala ma kota" => (encode) => 129873918273
129873918273 => (decode) => "Ala ma kota"

Najprostszy sposób który przychodzi mi do głowy to "zlepić" kolejne wartości ASCII znaków, ale powstają dwa problemy. Reprezentacje dziesiętne znaków to np. 49, 109, 45 więc musiałbym dodać zera do wartości jedno lub dwucyfrowych. Drugi to taki, że ten pomysł jest wyjątkowo nieoptymalny a potrzebuję wartość integer możliwie jak najmniejszą.

Wiem, że jest funkcja konwertująca powyższy string na liczbę w C lub C++ (niestety nie pamiętam nazwy może ktoś wie?) która robi to w mądrzejszy sposób niż zlepianie kodów ASCII.

Czy istnieje coś podobnego w JAVI`e a jeśli nie to co proponujecie żeby rozwiązać problem?

0

bodajże w c/c++ masz atoi, ale to zamieniało prawidłowo zapisane liczby na inta. W javie nie można tego w prost zrobić. Jedyna metoda to dodawanie tych zer. Czy możesz użyć tablicy bajtów?

0

niestety muszę mieć liczbę integer (a właściwie BigInteger) na wyjściu ponieważ później na niej wykonuję operacje matematyczne

0

Hm...

		String s = "Ala ma kota";
		BigInteger bi = new BigInteger(s.getBytes());
		System.out.println(bi);

Może być?

0

a jak odzyskać informację (String)?

wielkie dzięki! na prawdę mi pomogłeś

odzyskać można tak:

String w = new String(bi.toByteArray());

0

A nie prościej:
String w = bi.toString();

0

@mnbvcX, nie ponieważ w tym momencie dostaniesz liczbę. Konstruktor String(byte[]) wykona za to odpowiednią "magię" związaną z mapowaniem bajtów na litery.

1 użytkowników online, w tym zalogowanych: 0, gości: 1