Valeurs Hexadecimals d'un fichier

liipod Messages postés 10 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 6 mars 2012 - 31 janv. 2010 à 10:22
liipod Messages postés 10 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 6 mars 2012 - 31 janv. 2010 à 14:52
Bonjour,

je voudrais afficher les valeurs en hexadécimal d'un fichier, comme quand il est ouvert avec un "éditeur hexadécimal".

voila mon code source j'ai essayer avec la méthode "stringToHex" qui n'est pas de moi, mais le résultat afficher n'est pas le même que quand j'ouvre mon fichier avec un "éditeur hexadécimal"

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Launcher {

private FileReader file;
private BufferedReader buffer;

public Launcher() {

try {
file = new FileReader("chemin vers n'importe quelle fichier");
buffer = new BufferedReader(file);
} catch (FileNotFoundException e) {}
printFile();
}

private void printFile() {
String line;
while (true) {
try {
line = buffer.readLine();
if (line == null) break;
System.out.println(stringToHex(line));
} catch (IOException e) {}

}
}

private String stringToHex(String str) {
char[] chars = str.toCharArray();
StringBuffer strBuffer = new StringBuffer();
for (int i = 0; i < chars.length; i++) {
strBuffer.append(Integer.toHexString((int) chars[i]));
}
return strBuffer.toString();
}

public static void main(String[] args) {
new Launcher();
}

}

Merci d'avance pour votre aide.

3 réponses

liipod Messages postés 10 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 6 mars 2012
31 janv. 2010 à 11:35
j'ai trouver la soluble, voila au cas ou une autre personne en aurait besoin.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Launcher {

private File file;
private FileInputStream fis = null;
private int x;

public Launcher() {
file = new File("C:\\Users\\walid\\Documents\\udp.txt");
try {
fis = new FileInputStream(file);
while (true) {
x = fis.read();
if (x == -1) break;
System.out.print(java.lang.Integer.toHexString(x));
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new Launcher();
}

}
0
Utilisateur anonyme
31 janv. 2010 à 13:29
Salut,

J'ai essayé la première version de ton programme et pour moi c'était ok.

Le fichier que j'ai converti:

file = new FileReader("Launcher.java");
donne ce résultat:

202020696d706f7274206a6176612e696f2e42756666657265645265616465723b20
202020696d706f7274206a6176612e696f2e46696c654e6f74466f756e64457863657074696f6e3b20
202020696d706f7274206a6176612e696f2e46696c655265616465723b20
202020696d706f7274206a6176612e696f2e494f457863657074696f6e3b20Ï

202020207075626c696320636c617373204c61756e63686572207b20
202020
202020202020707269766174652046696c655265616465722066696c653b20
20202020202070726976617465204275666665726564526561646572206275666665723b20
202020
202020202020207075626c6963204c61756e636865722829207b20
202020202020
202020202020202020747279207b20
20202020202020202020202066696c65203d206e65772046696c6552656164657228224c61756e636865722e6a61766122293b20
202020202020202020202020627566666572203d206e65772042756666657265645265616465722866696c65293b20
2020202020202020207d20
202020202020202020202020206361746368202846696c654e6f74466f756e64457863657074696f6e206529207b7d20
2020202020202020207072696e7446696c6528293b20
2020202020207d20
202020
202020202020207072697661746520766f6964207072696e7446696c652829207b20
202020202020202020537472696e67206c696e653b20
2020202020202020207768696c6520287472756529207b20
202020202020202020202020747279207b20
2020202020202020202020202020206c696e65203d206275666665722e726561644c696e6528293b20
202020202020202020202020202020696620286c696e65203d3d206e756c6c2920
202020202020202020202020202020202020627265616b3b20
20202020202020202020202020202053797374656d2e6f75742e7072696e746c6e28737472696e67546f486578286c696e6529293b20
2020202020202020202020207d20
2020202020202020202020202020202063617463682028494f457863657074696f6e206529207b7d20
202020202020202020
2020202020202020207d20
2020202020207d20
202020
202020202020207072697661746520537472696e6720737472696e67546f48657828537472696e672073747229207b20
202020202020202020636861725b5d206368617273203d207374722e746f43686172417272617928293b20
202020202020202020537472696e6742756666657220737472427566666572203d206e657720537472696e6742756666657228293b20
202020202020202020666f722028696e742069203d20303b2069203c2063686172732e6c656e6774683b20692b2b29207b20
2020202020202020202020207374724275666665722e617070656e6428496e74656765722e746f486578537472696e672828696e74292063686172735b695d29293b20
2020202020202020207d20
20202020202020202072657475726e207374724275666665722e746f537472696e6728293b20
2020202020207d20
202020
202020202020207075626c69632073746174696320766f6964206d61696e28537472696e675b5d206172677329207b20
2020202020202020206e6577204c61756e6368657228293b20
2020202020207d
202020
2020207d

Que trouves-tu qui n'est pas correcte ?
Je n'ai pas contrôlé toutes les lignes, mais n'ai rien trouvé d'anormal dans ce que j'ai vérifié.

Cordialement,

Dan

...\ Dan /...
0
liipod Messages postés 10 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 6 mars 2012
31 janv. 2010 à 14:52
le code fonctionne très bien sauf que, le même fichier ouvert avec un éditeur hexadécimal ex: "XVI32" (qui est gratuit et très bien fait) ne me donne pas les même valeur, alors qu'avec le deuxième si.
je pense que l'erreur viens du fait que je l'ai ouvert comme étant un fichier texte, donc quelque caractères sont ignorer.
je suis pas très sure, je débute en java.

Merci Dan.
0