web-dev-qa-db-fra.com

Comment convertir une chaîne hexadécimale en chaîne Java?

Pour la journalisation, nous convertissons les journaux en tableau d'octets, puis en chaîne hexadécimale. Je veux le récupérer dans une chaîne Java), mais je ne suis pas en mesure de le faire.

La chaîne hexagonale dans le fichier journal ressemble à quelque chose comme

fd00000aa8660b5b010006acdc0100000101000100010000

Comment puis-je décoder cela?

35
Samra

Utilisation de Hex dans Apache Commons:

String hexString = "fd00000aa8660b5b010006acdc0100000101000100010000";    
byte[] bytes = Hex.decodeHex(hexString.toCharArray());
System.out.println(new String(bytes, "UTF-8"));
55
Reimeus
byte[] bytes = DatatypeConverter.parseHexBinary(hexString);
String result= new String(bytes, encoding);
28
telebog

Commencez par lire les données, puis convertissez-les en tableau d'octets:

 byte b = Byte.parseByte(str, 16); 

puis utilisez String constructeur:

new String(byte[] bytes) 

ou si le jeu de caractères n'est pas celui par défaut du système, alors:

new String(byte[] bytes, String charsetName) 
6
Aleksander Gralak

Vous pouvez aller de String (hex) à byte array À String as UTF-8(?). Assurez-vous que votre chaîne hexagonale ne comporte pas d'espaces de début et autres.

public static byte[] hexStringToByteArray(String hex) {
    int l = hex.length();
    byte[] data = new byte[l/2];
    for (int i = 0; i < l; i += 2) {
        data[i/2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                             + Character.digit(hex.charAt(i+1), 16));
    }
    return data;
}

Usage:

String b = "0xfd00000aa8660b5b010006acdc0100000101000100010000";
byte[] bytes = hexStringToByteArray(b);
String st = new String(bytes, StandardCharsets.UTF_8);
System.out.println(st);
6
Debosmit Ray

Essayez le code suivant:

public static byte[] decode(String hex){

        String[] list=hex.split("(?<=\\G.{2})");
        ByteBuffer buffer= ByteBuffer.allocate(list.length);
        System.out.println(list.length);
        for(String str: list)
            buffer.put(Byte.parseByte(str,16));

        return buffer.array();

}

Pour convertir en chaîne, créez simplement une nouvelle chaîne avec l'octet [] renvoyé par la méthode de décodage.

5
Munene iUwej Julius

Juste un autre moyen de convertir une chaîne hexadécimale en Java chaîne:

public static String unHex(String arg) {        

    String str = "";
    for(int i=0;i<arg.length();i+=2)
    {
        String s = arg.substring(i, (i + 2));
        int decimal = Integer.parseInt(s, 16);
        str = str + (char) decimal;
    }       
    return str;
}
3
Kunal Surana