Wie lassen sich die Einzelbuchstaben eines Strings in ihren hexadezimalen Werten darstellen?v.5.0

Mit einem Umweg über den Datentyp char bzw. seine Wrapper-Klasse Character lässt sich dies problemlos erledigen.

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.