Wie lassen sich die Einzelbuchstaben eines Strings in ihren hexadezimalen Werten darstellen?v.5.0
Die Methode convertStringToHex()
des Beispiels
konvertiert die einzelnen Buchstaben eines als Parameter
übergebenen Strings in deren hexadezimale char-Werte, erzeugt
daraus einen String und gibt diesen zurück. Hierbei werden, der
besseren Lesbarkeit und Weiterverarbeitung halber, die einzelnen
Hexadezimalwerte durch Leerzeichen voneinander getrennt.
Über eine Schleife wird der char
-Wert jedes
einzelnen Buchstabens ausgelesen. Die Methode toHexString()
der Wrapper-Klasse Integer
nimmt einen int
-Wert
als Parameter entgegen. Der übergebene char
-Wert
wird somit implizit gecastet. Die Methode gibt dann das hexadezimale
String-Literal zurück, das zusammen mit dem erwähnten
Leerzeichen in einem Puffer gespeichert wird. Nach Durchlaufen des
gesamten zu konvertierenden Strings wird dieser in einen weiteren
String konvertiert, durch trim()
seines
abschließenden Leerzeichens beraubt und zurück gegeben.
public class String2Hex {
private static String convertStringToHex(String s) {
if (s.length() == 0)
return "";
char c;
StringBuffer buff = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
c = s.charAt(i);
buff.append(Integer.toHexString(c) + " ");
}
return buff.toString().trim();
}
private static String convertHexToString(String s) {
if (s.length() == 0)
return "";
String[] arr = s.split(" ");
StringBuffer buff = new StringBuffer();
int i;
for (String str : arr) {
i = Integer.valueOf(str, 16).intValue();
String hs = new Character((char) i).toString();
buff.append(hs);
}
return buff.toString();
}
public static void main(String[] args) {
String s = "Javabeginners";
String hexStr = String2Hex.convertStringToHex(s);
System.out.println(hexStr);
String str = convertHexToString(hexStr);
System.out.println(str);
}
}
Der umgekehrte Weg wird durch den Aufruf der Methode convertHexToString()
beschritten. String.split()
zerlegt mittels des
Leerzeichens den Hexadezimal-String des gesamten Textes in ein String
-Array,
in dem jedes Element den hexadezimalen Wert eines Buchstabens
speichert. Das Array wird durchlaufen und seine Werte in einen
primitiven int
-Wert gewandelt. Die Methode Integer.parseInt()
nimmt hierbei neben dem zu konvertierenden String noch einen zweiten
Parameter entgegen: die Basis des Zahlensystems, hier die 16 zur
Kennzeichnung des Hexadezimalwerts. Auch hier wird das Ergebnis
wieder einem StringBuffer
hinzugefügt, der vor der
Rückgabe in einen String konvertiert wird.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.