String zu binary und zurück - Problem mit unsigned/signed bytes

subn0de

Mitglied
Hallo,
ich möchte einen String in binär umwandeln und zurück. Mit Sonderzeichen klappt das nicht, vermutlich liegt das daran das ASCII unsugned ist, Java aber mit signed bytes arbeitet. Wie kann ich ein unsigned byte zurück konvertieren oder gäbe es eine andere Möglichkeit?
Java:
public class BinString {
    public static void main(String args[]) {
        String s = "ä";
        System.out.println(binToString(stringToBin(s)));
    }

    public static String[] stringToBin(String s) {
        System.out.println("Converting: " + s);
        byte[] b = s.getBytes();
        String[] sa = new String[s.getBytes().length];
        for (int i = 0; i < b.length; i++) {
            sa[i] = Integer.toBinaryString(b[i] & 0xFF);
        }
        return sa;
    }

    public static String binToString(String[] strar) {
        byte[] bar = new byte[strar.length];
        for (int i = 0; i < strar.length; i++) {
            bar[i] = Byte.parseByte(strar[i], 2);
        }
        String s = new String(bar);
        return s;
    }
}
 
In der stringToBin-Methode verwendest du ja bereits Integers statt Bytes, um das Problem mit dem Vorzeichen zu umgehen. Das musst du dann auch beim Zurückwandeln machen:
Java:
bar[i] = (byte)Integer.parseInt(strar[i], 2);
 

Zurück
Oben