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 :

Lecture de fichiers binary en petit endian


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut Lecture de fichiers binary en petit endian
    Salut,

    Je souhaiterais traduire un programme C en Java mais j'ai appris que Java fonctionne en encodage big-endian (bit de poids fort) alors que les fichiers sur un PC classique sont encodés en little-endian (bit de poids faible).

    L'idéal c'est que je puisse lire le contenu d'un fichier en little-endian. Par exemple, il faudrais que la valeur hexadécimale de la magic key du fichier (une signature numérique qui permet d'identifier le type) corresponde à ce qui est décrit dans le code source C.

    Il existe un vieux package appellé LEDataStream qui permettrais de lire en format little-endian mais il parais aussi que la version 1.4 de Java supporte cette possibilité en important java.nio.* (new I/O).

    Le problème c'est que je ne trouve aucun exemple qui explique clairement comment lire les données sous ce format.

    Merci d'avance pour tout aide ou suggestion.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ceci devrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // nio access to little-endian binary float data
    float f = ByteBuffer.wrap( array ).order( ByteOrder.LITTLE_ENDIAN ).getFloat();

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Merci. Si j'ai bien compris il s'agit de manipuler un ByteBuffer avant de le stocker. Ca me semble être une bonne piste.

    Ce qu'il me resterais à faire c'est de lire l'équivalent d'un dword sous forme de bytes et de convertir cela en integer 32-bit. Je pourrais alors vérifier si la valeur héxadécimale de la magic key correspond bien à ce qui est écrit dans le code source C.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Je pense être arrivé à une solution. Le code qui suit affiche la magic key tel que je le souhaitais.

    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
            try
            {
                File file = new File( "F:/Testfile" );
     
                FileInputStream in = new FileInputStream( file );
     
                byte[] data = new byte[ 4 ];
     
                in.read( data );
     
                int i = ByteBuffer.wrap( data ).order( ByteOrder.LITTLE_ENDIAN ).getInt();
     
                System.out.println( Integer.toHexString( i ) );
     
                in.close();
            }
            catch( FileNotFoundException e )
            {
                System.out.println( " File not found ! ");
            }
            catch( IOException e )
            {
                System.out.println( "I/O Exception encountered" );
            }

Discussions similaires

  1. Petite enigme de lecture de fichier binaire
    Par Bourrine dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2012, 19h29
  2. Petite base de donnée en C (lecture dans fichier)
    Par oc_alex86 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/11/2008, 18h03
  3. [NASM] Petits problèmes lecture de fichier
    Par Jaronimo dans le forum Assembleur
    Réponses: 1
    Dernier message: 01/05/2008, 14h56
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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