Konvertierung Int->String in Java

  • Moin!
    Irgenwie habe ich gerade einen :gpaul:!


    Ich möchte eine Integer-Zahl als String dargestellt haben.
    Direktes Typcasting geht nicht.
    Im String soll nicht die Zahl als Buchstaben dargestellt werden ("123"), sondern der richtige (Speicher-)Inhalt.
    Also bei jeder Int-Zahl müsste ein 4Byte String rauskommen.


    Wer kann mir helfen?

    Im Leben geht es nicht nur darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen.

  • Ich bin nicht sicher, ob ich die Frage richtig verstehe: Willst Du für einen Integer von 123 jetzt "7b" ausgegeben haben? Oder willst Du ein "{"?


    Ersteres kannst du mit Integer.toHexString(int deinInt) erreichen (ggf. vorne mit "0" auffüllen). Für letzteres habe ich leider im Moment keine zündende Idee...


    Gruß,


    Henning.

    ________________________

  • Ich meine wirklich letzteres. Also wie du schon sagstest, aus "123" müsste dann "{" werden.

    Im Leben geht es nicht nur darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen.

  • Zitat

    Original geschrieben von Snake
    Du willst Zeichenketten in Zahlen umwandeln?


    Nein, ich will den Speicherinhalt einer Integer-Variable haben...

    Im Leben geht es nicht nur darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen.

  • In welcher Darstellung? Jedes Byte als ASCII-Code (oder 8 Bit Unicode) interpretiert (also einen String mit vier Zeichen? Oder je zwei Byte als 16Bit Unicode interpretiert (also einen String mit zwei Zeichen)? Deine Problembeschreibung ist leider etwas unklar.

    History: Motorola e930, t720, RAZR V3, MOTORAZR maxx V6, MOTOROKR Z6, MOTOROKR E8, MOTOZINE ZN5, Samsung S8000 Jet

  • Zitat

    Original geschrieben von SpineBuster
    Ich meine wirklich letzteres. Also wie du schon sagstest, aus "123" müsste dann "{" werden.


    Nicht sehr elegant aber machbar:



    int i = 123;
    char c;
    String s;


    s = "" + (char) i;


    [Das ist zumindeste die dreckigste Variante :)]

  • Cool! :top:
    Ich hab ewig probiert, wie das geht -- auf die Lösung mit dem Cast bin ich nicht gekommen... (:gpaul: meinerseits würde ich sagen).


    Bleibt nur noch die Frage, wie der Integer in 4 Byte zerlegt wird (davon ausgehend, daß Spinebuster ASCII-Zeichen und nicht Unicode haben will). Java speichert int-Werte nach dem 2er-Komplement - weiß jemand, wie man aus einem int die einzelnen Byte herausbekommt?


    Gruß,


    Henning.

    ________________________

  • Öhm, korrigier mich wenn ich mich irre, aber wenn du Ascii haben möchtest
    brauchst du nur ein und nicht vier Byte (Soweit ich weiss reichen selbst für
    den erweiterten Ascii Zeichensatz zwei Byte -> 512 = 2^9 Zeichen).
    Aber wenn du unbedingt Bytes auslesen musst?!
    Also richtig Bytes dieser Art "00111001" könntest du das folgendermaßen
    machen:



    int[] einByte = new int[8]
    int zahl = <irgendwas>;
    int summand = 256;


    for (int z = 0; i <= 8; i++)
    {


    einByte[i] = 0;


    if (zahl > summand)
    {
    einByte[i] = 1;
    zahl = zahl - summand;
    summand = summand / 2;
    }


    }


    [EDIT] Müsste zumindest so.... oder annähernd so gehen [/EDIT]

  • Ein ASCII-Zeichen ist nur ein Byte, das ist klar. Aber ein Java-Integer sind 4 Byte (32 Bit) -- und kann Werte von -2147483648 bis 2147483647 annehmen. Deswegen muß der noch in 4 Byte zerlegt werden.


    Gruß,


    Henning.

    ________________________

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!