byte array in string umwandeln

  • hallo,

    gibt es in java eine schnellere / elegantere möglichkeit aus einem byte[] einen String zu machen als folgende methode zeigt...

    String bla = String.valueOf(byteArray); geht nämlich net, gibt mir nur die Objektadresse.

    ps: frameContent ist das byte array.

  • wobei ich aber glaub, dass die lösung

    Code
    String s = new String ( frameContent );

    effizienter arbeitet als deine implementierung.

    So wie du das als schleife gelöst hast, wird für jedes zeichen, das hinzugefügt wird, ein neuer Speicherbereich mit der neuen Größe allokiert, der alte Text kopiert, das neue Zeichen hinzugefügt und der alte Bereich wieder freigegeben.

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • wobei ich aber glaub, dass die lösung

    Code
    String s = new String ( frameContent );

    ...für jedes zeichen, das hinzugefügt wird, ein neuer Speicherbereich mit der neuen Größe allokiert, der alte Text kopiert, das neue Zeichen hinzugefügt und der alte Bereich wieder freigegeben.

    und was glaubs du passiert im konstruktor String(byte[] string) der stringklasse? ;)

  • und was glaubs du passiert im konstruktor String(byte[] string) der stringklasse? ;)

    ich glaube, der allokiert genau 1x den Speicherbereich, der für das Array notwendig ist und befüllt das genau 1x und muss genau 0x wieder speicher freigeben

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • Ich glaube Erklärbär hat voellig recht. Glauben ist zwar gut, Wissen ist aber viel besser. Java ist Open Source.

    aus java.lang.String:

    Zitat von beat


    ...mach mir nur ein bissl sorgen um die Laufzeit da mein byte array sehr lang werden kann und da halt bei jeder iteration ein neues string objekt erstellt wird.

    Wenn Du genau weisst (d.h. wenn du es getestest hast), das ein bestimmter Teil deines Codes fuer Dein fertiges Programm unzureichend langsam ist, dann optimiere ihn. Vorher ist Lesbarkeit immer wichtiger. Pre-Optimierung fuert nur zu komplexerem Code. Und der schadet Deinem Programm viel mehr als er ihm nutzt.

    Es gibt natuerlich Faelle in denen man ziemlich genau weiss das der Code zu langsam laufen wird. Z.b. beim Verketten von Strings in Java mit dem '+' Operator:

    Zitat von beat


    frameContentAsString += Character.toString((char)frameContent[i]);

    Vermeide den '+' operator, um viele generische Strings miteinander zu verbinden. Verwende stattdessen einen java.lang.StringBuilder oder einen java.lang.StringBuffer.

    lass mal diesen Test laufen, das weisst Du warum:

Jetzt mitmachen!

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