Data Konverter - Probleme mit Byte[] Kodierung

Kneddel

Mitglied
Hi Liebe Community,


ich bin gerade dabei einen kleineren Kodierer in Java zu erstellen. Jetzt wandel ich Text, Base64, Dezimal-, Hexadezimal- und Binärzahlen (alle als String) in ein Byte mit der data.getBytes(StandardCharsets.UTF_8) Methode um, und wieder zurück (bei Text beispielsweise: new String(data, StandardCharsets.UTF_8))

Nun zu meiner Frage: Ich habe einen online Kodierer gefunden, der denselben Zweck erfüllt. Dieser deckt aber nicht nur die Dezimalzahlen 0-127 ab, sondern addiert zu allen negativen Dezimalzahlen (-1)-(-128), die ich eingebe, den Wert 256 dazu. Bei meiner Byte Implementierung kriege ich das nicht hin. Was muss ich abändern, dass ich auch diese erhöhte Reichweite habe?

Ich hoffe, dass eine Antwort ohne Code möglich ist, da ich gerade nicht an meinem richtigen Rechner bin... ;-)


Liebe Grüße

(Sorry, wenn ich das falsche Unterforum erwischt habe, aber ich kenne mich hier nicht so sehr aus...)
 
Ich verstehe das Problem nicht ganz, vermute aber mal, dass es darum geht, dass byte in Java mit einem Vorzeichen behaftet ist (8 bit signed int). Sprich:
Java:
        byte b = (byte) 255;
        System.out.println(b);
        System.out.println(b & 0xff);
Liefert einmal als Ausgabe -1, und einmal 255.
 
Ich merke gerade beim zweiten Durchlesen, dass ich mich etwas vertan habe... Mein Problem ist, dass ich derzeit mit: data.getBytes(StandardCharsets.UTF_8) von Text zu Byte umwandle und mit: new String(data, StandardCharsets.UTF_8) wieder von Byte zu Text... nun kommt aber bei meinem Programm bei Eingabe einer negativen Dezimalzahl ziemlicher Unsinn (bzw. ein schwarzes Karo mit Fragezeichen) bei Ausgabe des Textwertes heraus. Bei dem Kodierer, den ich online gefunden habe springt die negative Dezimalzahl um 256 hoch und es kommt ein ordentlicher Textwert heraus... Entschuldigung für die verwirrenden Angaben und fehlenden Code, aber vielleicht versteht jemand mein Problem.


Grüße
 
Dann musst Du doch mal den Code posten:

Java:
        String eingabe = "-200";
        byte[] bytes = eingabe.getBytes(StandardCharsets.UTF_8);
        String ausgabe = new String(bytes, StandardCharsets.UTF_8);
        System.out.println(eingabe);
        System.out.println(ausgabe);
liefert
Code:
-200
-200
 

Zurück
Oben