Konwersja String (dowolne ASCII) => Integer ?

Odpowiedz Nowy wątek
Mariusz Dobrzycki
2010-03-02 16:03
Mariusz Dobrzycki
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?

Pozostało 580 znaków

2010-03-02 16:12

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

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?

Pozostało 580 znaków

Mariusz Dobrzycki
2010-03-02 16:24
Mariusz Dobrzycki
0

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

Pozostało 580 znaków

2010-03-02 16:25

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

0

Hm...

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

Może być?

Pozostało 580 znaków

Mariusz Dobrzycki
2010-03-02 16:41
Mariusz Dobrzycki
0

a jak odzyskać informację (String)?

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

odzyskać można tak:

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

Pozostało 580 znaków

2010-03-02 17:15

Rejestracja: 11 lat temu

Ostatnio: 7 lat temu

0

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


Not Found
The requested URL /wypasiona_sygnaturka.txt was not found in this brain.
-----
Human/1.0.00 (Earth) Server at Poland Port 65535

Pozostało 580 znaków

2010-03-02 17:57

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

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.

Pozostało 580 znaków

Odpowiedz

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