Wie kann man einen Integer in eine gültige Unicode-Character-Darstellung umwandeln?
Im Beispiel wird ein dezimaler Wert (hier 25610) durch
die statische Methode toHexString(int i)
der Klasse Integer
in ein String-Literal des entsprechenden hexadezimalen Wertes
gewandelt. Es wird der Methode fillWithZero(String s, int
digits)
als Parameter übergeben. Deren zweiter
Parameter gibt die Anzahl der benötigten Gesamtstellen an, die
nach links durch '0' aufgefüllt werden sollen.
Die
Java-Unicode-Character-Werte sind vierstellig. In einer Schleife
werden schließlich von links nach rechts Nullen an den
vorbelegten String \\u
angefügt, bis sich mit dem
übergebenen Hexadezimalwert ein vierstelliger Wert bezogen auf
die Ziffernstellen ergibt.
Der Doppelbackslash hat hierbei die
folgende Funktion. Ein Backslash dient zur Maskierung von
Sonderzeichen. \u
ist jedoch kein gültiges
Sonderzeichen, sondern lediglich die Kombination aus \
und u
. Um den Backslash selbst darzustellen und ihm so
seine Maskierungsfunktion zu nehmen, muss der Backslash selber
maskiert werden. Nur so kann die Kombination aus Backslash und 'u'
als 'Nichtsonderzeichen' dargestellt werden.
public class IntToUnicode { public static void main(String[] args) { String hex = Integer.toHexString(256); // 101 hex = fillWithZero(hex, 4); System.out.println(hex); // \u0101 } static String fillWithZero(String s, int digits) { String str = "\\u"; int strLen = s.length(); while (digits > 0) { if (digits > strLen) { str += "0"; } else { char c = s.charAt(strLen - digits); str += new Character(c).toString(); } digits--; } return str; } }
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.