Existe-t-il un moyen d'afficher des symboles ASCII en java?


Je visualise un fichier de texte de capture et il montre les symboles obtenus à partir de la valeur hexadécimale en ASCII. Dans Notepad++, il montre également les symboles de 00 to 1Fsont bien mappés par cette page Webet vous pouvez trouver la table ASCII complète, y compris les valeurs étendues avec leurs nombres hexadécimaux et décimaux ici. Je comprends qu'ils sont censés être des caractères de contrôle, mais existe-t-il un moyen de les montrer en java?

, Voici ce qui est un échantillon de ce qui est affiché dans le fichier entrez la description de l'image ici

Je peux obtenir tous les autres symboles ASCII à afficher dans mon programme java, mais pas ceux avec les symboles comme STX NUL EOT SOH etc.. quelles sont les valeurs de 0 to 31 en décimal et 00 to 1F en hexadécimal.

Voici un instantané de la table ASCII de ici entrez la description de l'image ici

Voici un extrait de console de ce qui est affiché dans la console entrez la description de l'image ici

C'est le code que j'utilise pour imprimer ça.

FileInputStream fis = new FileInputStream(filePath);
int length = (int) new File(filePath).length();
byte[] buffer = new byte[length];
fis.read(buffer, 0, length);

for (int i = 1; i < hex.length(); i++){
                if(i %2 == 0){
                    String test = String.valueOf(hex.charAt(i-2))+ String.valueOf(hex.charAt(i-1));

                    System.out.println("Hex: "+test+" hexadecimal: "+Integer.parseInt(test, 16)+" char: "+(char) Integer.parseInt(test, 16));
                }
            }

Toute aide serait grandement apprécié!!

Author: Salvador Hernandez, 2017-01-13

1 answers

Le problème ici est que vous affichez la valeur sous forme de caractère, elle sera donc automatiquement interprétée par votre console comme un caractère avec une manière spécifique d'être affiché.

Si vous voulez afficher quelque chose qui correspond à la vue du bloc-notes, vous devrez probablement utiliser une table pour les caractères non imprimables, qui ressemblerait à:

private static final String[] myTable = {"NUL", "SOH", ... };
public String getCharAsString(char value) {
    if(value <= (char) 0x1F) {
        return myTable[value];
    } else {
        return "" + value;
    }
}
 1
Author: Simon Guerout, 2017-01-13 18:06:38