IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Binaire vers ASCII


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut Binaire vers ASCII
    Bonjour,

    Je cherche à transformer un fichier binaire vers le format ASCII.

    Connaissez-vous une classe pour ce faire ? Ou même, disposez-vous d'un exemple de code qui pourrait me mettre sur la piste ?

    J'ai trouvé nombre de choses pour C/C++ mais rien pour JAVA.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par aliasjcdenton Voir le message
    Je cherche à transformer un fichier binaire vers le format ASCII.
    Que veux-tu dire par là exactement ?

    a++

  3. #3
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    javadoc...
    String(byte[] bytes, String charsetName)
    Constructs a new String by decoding the specified array of bytes using the specified charset.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Merci à tous 2 pour vos réponses.

    Je pense que c'est ce dont j'ai besoin, la description de la classe me semble coller. Je vais essayer.

    Merci encore !


  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Bon, j'ai trouvé d'autres choses sur le Net et voici ce que j'ai écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
    import java.nio.charset.*;
     
    public class Bin2ascii {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) throws IOException {
    		//System.out.println("Test d'affichage");
     
    		// Définition des variables
    	    //FileInputStream myFile = new FileInputStream("C:/Temp/Gregor/temp/text.txt"); // Nom et emplacement du fichier binaire
    	    FileInputStream myFile = new FileInputStream("C:/Temp/Gregor/temp/P0.dat");
    	    Charset charset = Charset.forName("ISO-8859-1"); // Encodage de caractères
    	    CharsetDecoder decoder = charset.newDecoder(); // Objet decoder
    	    ByteBuffer byteBuf = ByteBuffer.allocate(1); // Tampon : 1 octet (= 1 byte)
    	    FileChannel canal = myFile.getChannel(); // Canal
     
    	    // Lecture du fichier octet par octet jusqu'à la fin
    	    // et affichage en code ASCII
    	    while (byteBuf.remaining() > 0) {
    	    	canal.read(byteBuf);
    	    	byteBuf.flip();
    		    CharBuffer carBuf = decoder.decode(byteBuf);
    		    System.out.print(carBuf.toString());
    		    byteBuf.clear();
    	    }
     
    	    // Fermeture du fichier
    	    myFile.close();
     
    	}
    }
    Malheureusement, ceci ne fait qu'afficher le fichier binaire comme si je l'ouvrait avec un éditeur de texte comme le Bloc-notes de Windows par exemple.

    Savez-vous comment remédier à ce problème ?

    Merci d'avance pour votre aide !

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quelques remarques :
    • Si tu veux de l'ASCII pourquoi utiliser l'ISO-8859-1 ?
    • Si c'est simplement pour décoder le fichier pourquoi ne pas directement un InputStreamReader...
    • Il faut toujours utiliser un finally pour libérer les ressources...


    Bref cela donnerait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	Reader reader = new InputStreamReader(
    			new FileInputStream("C:/Temp/Gregor/temp/P0.dat"),
    			"ISO-8859-1");
    	try {
    		char[] cbuf = new char[8192];
    		int len;
     
    		while ( (len=reader.read(cbuf)) >= 0 ) {
    			System.out.print(new String(cbuf, 0, len));
    		}
     
    	} finally {
    		reader.close();
    	}

    Citation Envoyé par aliasjcdenton Voir le message
    Malheureusement, ceci ne fait qu'afficher le fichier binaire comme si je l'ouvrait avec un éditeur de texte comme le Bloc-notes de Windows par exemple.
    Par contre je ne comprend pas ce que tu veux dire par là !! Bref ton problème n'est pas très clair...

    a++

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Je me suis en effet sans doute mal exprimé. Voici le problème :

    Je relève des valeurs de débits dans une canalisation grâce à une sonde. Cette dernière produit des fichiers dont voici un extrait, ouvert avec un éditeur de texte type Bloc-notes de Windows (Wordpad) :

    TûSçSÙSÏSÁS´S¢SšSSŒS„S}SyStSuSrSpSmSgSbS\SVSRSISAS7S,S SS
    SPþOòOæOÙOÎOÅO»O°O¤O˜OŒO‚OwOkO`OVOKO@O3O&OOOOùNîNçNàNÖNÌNÁN·N*N£N™NN…NzNpNeN\NRNHN>N5 N N N NNNNN N N!NN NNN N N!N!N"N"N!N"N N N!N"N"N"N"N!N#N#N#N#N"N#N"N#N#N#N#N#N#N#N$N#N#N#N"N#N#N"N"N#N#N#N"N$N$N$N%N$N%N%N$N$N%N N!N N"N"NN N N!N"N#N!N!N!N"N"NN"N!N N!NN N"N N!N NN!NNNN N NNN NNN NN NNNNNNNN!NN!N#N"NNNN%N6NENRN]NfNpNvN|N‚N…NˆN‰NŠN‰N‰N‡NƒNN}NzNuNqNmNhNdN`NZNUNQNLNFNBN N N N N N"N!N!N!N"N!N!N!N!N!N!N!N N NNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNN N!N"N#N"N$N$N$N$N$NNNNNNNNNNNNNN N!N!N"N$N$N%N%N%N#N!NNNNNNNNNNNN!N%N%N%N&N'N'N$N!NNNNNNNNNNN"N#N$N$N"N!NNNNNNNNN N!N NNNNNNNNNNN!N!NNNNNNNNNNNNN N!N#N!NNNNNNNNNNNNN#N$N&N)N)N&N'N)N(N"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N&N!N!N N"NNNNNNNNNNNNNNN NNN NNNNNNNNNNNNNN N NNNNNNNNNNNNNNN!N!N N"N!N N NNNNNNNNNNNNNNNN N NN!NN!N"N N!N!N!N!NNNNNNNNNNNNNN NN N!N!N!N"N"N"N!N!N N!N N!N N!N!N"N N!N"N"N"N"N!N!N NNNNN N!N!N!N"N!N"N"N!N"N!N!N!N!N"N"N"N"N!N!N"N!N!N N!N N!N N N N N!N!N!N N N!N"N!N"N"N N N"N"N!N"N"N"N#N#N"N!N#N"N"N"N!N#N!N#N$N#N#N#N$N#N#N#NN"N#N#N$N$N"N#N N$N!N!N!N"N#N N N%N!NN#N!N!N"N"N!N"NN!N$N!N N#NN#N!NNN!NNN N N&N$N$N!N"N"N#N#N"N&NN!N"N"N%N&N!N&N#N$N%N$N"N$N$N#N%N% N#N#N#N$N N#NN$N!N N"N N"N"N!N#N!N!N#N"N!N!N N N"N#N"N"N"N N!N N"NN!N!N"N!N!N"N"N!N!N"N NN N!N"N"N!N N"N"N"N NN"N"N N%N$N"N"N$NNN"N$N N!NNN!NNNNN NNNNN"N!NNN NNNN"NNNNNNNNN NNNNNNNNNNN NNNNNNN N NNN N NNNNNNNN NN NNN N N NNNN N!N"N!N"N NN NN N!N N!N!N!NN!N"N!N N!N N N N!N!N!N"N"N NNNN!N N N!N NN N"N"N#N"N!N"N!N!N!N N"N!N"N"N!NN!N N!N NN N"N!N N N NN!N N!N NNNNNNN!N!N!NN!NNNN NNNN N NN!NNNNN!N NNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
    TTóSáSÒSÇS¹S*S©S·SáS,TyT¨TÍTõT)U@UWUtUsU…UŽU›U£U¤U™U•UUpUfUeUQUEU-UUUøTïTòTöTõT UU&U,U/U*U,UUU U

    Il est possible de lire ces fichiers grâce au logiciel fourni par le constructeur et qui permet d'exporter des données dans un format ASCII séparé par des tabulations que l'on peut ensuite reprendre dans un tableur type Excel par exemple.

    Je cherche à transformer moi-même ces fichiers "binaires?" dans un format texte lisible ASCII, sans passer par le logiciel du constructeur.

    Mon but est de transformer à la volée ces données, de les contrôler, de les traiter (validation / invalidation) puis de les stocker dans une base de données, le tout grâce à une routine Java.

    J'espère avoir pu être plus clair et merci d'avance pour vos réponses.

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Dans ce cas tu dois connaitre le format de ce fichier (a quoi correspond chaque octet) pour pouvoir le lire et en donner une représentation textuelle...

    Mais il n'y a pas à proprement parler de "conversion" binaire->ascii...

    a++

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Merci pour la réponse !

    je m'en doutais, il ne me reste plus qu'à contacter le constructeur et voir s'il est d'accord de me renseigner.

    Merci encore !


  10. #10
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Avec la lib java.io tu peux tenter de trouver l'encodage utilisé ( java.nio.charset.CharsetDecoder.detectedCharset).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier binaire vers fichier ascii.
    Par vbk!!! dans le forum Général Python
    Réponses: 3
    Dernier message: 24/09/2008, 12h17
  2. Convertion d'un string 'binaire' vers un int
    Par Hokage dans le forum Débuter
    Réponses: 14
    Dernier message: 28/09/2007, 11h51
  3. convertir un fichier binaire en ascii
    Par M_JOU79 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/06/2007, 23h48
  4. conversion UTF8 vers ASCII en C
    Par znarf dans le forum C
    Réponses: 2
    Dernier message: 05/07/2006, 13h55
  5. Convertir du binaire en Ascii
    Par brute dans le forum MFC
    Réponses: 2
    Dernier message: 28/12/2005, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo