String to Byte

El_tom

Mitglied
Hallo zusammen,

ich habe folgendes Problem: Wie wandele ich einen String in ein Byte-Array um.
Gegeben ist ein String der Form "00000010" etwa (welcher für 2 steht).
Meine Frage ist, wie wandele ich das jetzt in ein Byte-Array um. Alle meine bisherigen Versuche sind fehlgeschlagen
 

El_tom

Mitglied
Z.b. hab ich Integer.toBinaryString(...) benutzt, aber da liefert er mir falsche Ergebnisse....
Ich muss es irgendwie zum Laufen bekommen :(
 

Tobse

Top Contributor
Ich vermute, weil es kein Integer ist, sonder eine Binärzahl.

Nein, deswegen nicht. Was sagt dir denn der Methodenname? Ein Blick ins Javadoc hilft immer weiter:

Javadoc zu Integer.toBinaryString hat gesagt.:
public static String toBinaryString(int i)

Returns a string representation of the integer argument as an unsigned integer in base 2.

[...]

Es nimmt einen Integer und gibt einen String zurück. Du hast aber einen String und willst einen Byte. Da stimmt was nicht, oder? Auch steht da, dass es die Zahl in einen Binärstring umwandelt. Das ist ja das Gegenteil von dem, was du erreichen willst ;)

----

Dann müsste es Byte.valueOf("00000010",2) sein?
Was kommt denn raus, wenn du es ausführst?
 
X

Xyz1

Gast
Ich muss es irgendwie zum Laufen bekommen :(
Okay, nur, weil es eilt, und ich kein Tränenvergießen möchte. :D

Java:
    public static void main(String[] args) throws IOException {
        String s = "00000010"; // 2
        byte b1 = Byte.parseByte(s, 2);
        byte b2 = 0;
        for (int i = 0; i < 8; i++) {
            b2 |= (s.charAt(7 - i) - '0') << i;
        }
        System.out.println("b1 = " + b1);
        System.out.println("b2 = " + b2);

        String string = "0100001101000011010000110100001101000011"; // 67,...
        byte[] array = new byte[string.length() / 8];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < 8; j++) {
                array[i] |= (string.charAt(i * 8 + 7 - j) - '0') << j;
            }
        }
        System.out.println(Arrays.toString(array));
    }
 

Tobse

Top Contributor
@DerWissende Library-Funktionen sind doch was schönes ;)

Java:
byte[] byteAr = new BigInteger("0110011100100000010100111001001000110", 2).toByteArray();
 
X

Xyz1

Gast
@Tobse : Ok, aber ohne Bibliotheks-funktionen muss man es in der Prüfung auch können - sonst gibt's in der Prüfung die 5.
Das soll kein Vorwurf sein - sondern jeder braucht zwischendurch Beispiele, an den er sich "durchangeln" kann. :)
Schönen Sonntag noch.

Bearbeitung: Muss muss mit der 1 als MSB aufpassen, das gibt sonst manchmal komische Ergebnisse.
 

Neue Themen


Oben