Ich habe ein String
, das einige ASCII-Steuerzeichen enthält (nämlich RS
(0x1e) und US
(0x1f)). Ich habe sie in meinem Code als solche definiert:
später in meinem Code, ich möchte eine Zeichenfolge mit diesen Zeichen teilen:
%Vor%aber das funktioniert nicht richtig. Nach einigem Herumfummeln habe ich das gefunden
%Vor% funktioniert, aber in diesem Fall muss ich mich an die Codes erinnern. Ich benutze das RS
statische Byte auch in anderen Teilen, also nur das Ändern ist keine echte Option. Ich könnte natürlich ein RS_STRING
oder etwas erstellen, aber das bedeutet doppelte Arbeit.
Irgendeine saubere gute Lösung dafür?
Ich habe das Zeichen als char
anstatt als byte
deklariert und für mich korrigiert - das Folgende funktioniert gut:
Wenn jedoch ein Byte als Typ verwendet wird, schlägt es fehl:
%Vor% Sie können natürlich char
wieder auf byte
anwenden, wenn Sie in anderen Teilen Ihres Codes darauf Bezug nehmen müssen.
Das Problem ist die Verwendung von String.valueOf()
, weil kein String.valueOf (Byte) ist.
Stattdessen wird das Byte automatisch auf int
und String.valueOf(int)
wird erweitert. Und diese Methode gibt die dezimale Zeichenfolgendarstellung des int.
Das ist der Grund, warum der Vorschlag, RS als Char zu deklarieren, es behebt, String.valueOf (char) tut tatsächlich das, was Sie erwarten (gibt einen String mit diesem char darin an).
Sie könnten alternativ einfach eine explizite Umwandlung hinzufügen, wenn Sie in die String-Repräsentation transformieren: String.valueOf((char) RS)
und die condentative RS als Byte deklarieren.