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 :

écrire des bytes dans un fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut écrire des bytes dans un fichier
    Bonjour,
    Je manipule actuellement des bytes sous forme d'entiers et je cherche à les sauvegarder dans un fichier directement sous forme hexadécimale. Mon problème est que je n'arrive pas à les écrire directement sous forme de bytes mais mon programme les écrit sous forme de caractères.
    Petit exemple:

    Fichier source:
    bytes : 00 02 00 02

    je lis ce fichier avec file.read() et je récupère 2 entiers : 2 et 2

    je les utilise dans mon porgramme puis je voudrais les stocker sous la même forme qu'au départ dans un fichier de destination.
    Je commence par les convertir en hexa: 0x0002 0x0002
    puis je les transforme en string: "0002" "0002"
    je les stocke dans un buffer: byte[] = "00020002"
    et enfin j'écris mon buffer dans mon fichier: bufferedOutputStream.write(buff);

    Vous l'aurez compris dans mon fichier je me retrouve avec :
    48 48 48 50 48 48 48 50
    ce qui correspond aux valeurs hexa des caractères 00020002 ....

    J'ai trouvé qu'en faisant:
    fBufCopy[0] = (byte) 0x00;
    fBufCopy[1] = (byte) 0x02;
    fBufCopy[2] = (byte) 0x00;
    fBufCopy[3] = (byte) 0x02;

    ca marche mais je ne vois pas comment convertir mon int hexa '0002' en ca...

    J'ai lu la FAQ mais je n'y ai pas trouvé mon bonheur et google ne me sort que le sens inverse -_-

    Désolé si j'ai raté quelque chose merci d'avance pour vos réponses

  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,


    Il suffit de passer via des DataInputStream/DataOutputStream...

    a++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ahhh merci
    Je pensais que pour écrire des bytes il fallait utiliser..... ByteOutputStream .....
    Je m'emmêle un peu les pinceaux avec tout ça, je récupère des hexa que je stocke dans des int pour enfin les écrire sous forme de bytes....
    Java ne connait pas le type hexa?
    Actuellement je lis mon fichier avec une fonction qui lit 4 bytes d'affilés et qui me retourne un int. Pour travailler je compare cet int à des constantes écrites sous forme CONST=0x0A12;
    puis j'utilise une méthode intToHex() pour transformer mon int en une chaine de caractères de type hexa... Mais c'est embêtant que ce soit un String alors qu'en faite c'est un int sous forme hexa....
    Ca fait beaucoup de manipulations alors que la valeur ne change pas du début à la fin.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Mr_LoOnY Voir le message
    Ahhh merci
    Je pensais que pour écrire des bytes il fallait utiliser..... ByteOutputStream .....
    Je m'emmêle un peu les pinceaux avec tout ça, je récupère des hexa que je stocke dans des int pour enfin les écrire sous forme de bytes....
    Java ne connait pas le type hexa?
    Actuellement je lis mon fichier avec une fonction qui lit 4 bytes d'affilés et qui me retourne un int. Pour travailler je compare cet int à des constantes écrites sous forme CONST=0x0A12;
    puis j'utilise une méthode intToHex() pour transformer mon int en une chaine de caractères de type hexa... Mais c'est embêtant que ce soit un String alors qu'en faite c'est un int sous forme hexa....
    Ca fait beaucoup de manipulations alors que la valeur ne change pas du début à la fin.
    Ca n'a rien à voir avec Java. Tu aurais fais la même chose avec n'importe quel langage
    L'hexa ou le décimal, c'est uniquement une représentation. Une machine fonctionne en binaire, rien d'autre.
    Tes constantes sont stockées dans un fichier ? Alors à toi de les charger une fois pour toute et de les stocker sous forme de int.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Invité
    Invité(e)
    Par défaut
    non je manipule des fichiers dicom.

    J'ai des constantes dans ma classe sous forme hexa. Je lis un dicom et récupère les données (hexa) que je stocke dans des variables (int) pour les manipuler. Ensuite quand je sauvegarde mon fichier dicom il faut que je réécrive ces variables sous forme hexa.

    Mais bon c'est normal que la machine ne fasse pas de différences entre un hexa et un int

    Merci à vous pour les réponses

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Mr_LoOnY Voir le message
    Mais bon c'est normal que la machine ne fasse pas de différences entre un hexa et un int
    Pour être tout-à-fait clair : une telle différence n'existe pas. Il faut bien le comprendre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XML] Comment écrire des instructions dans un fichier XML
    Par Alexandrebox dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 28/04/2009, 12h50
  2. écrire des bytes dans un fichier
    Par sepehr_gsfc dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/03/2009, 16h23
  3. écrire des variables dans un fichier
    Par Blako_17 dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/07/2008, 22h51
  4. Réponses: 4
    Dernier message: 07/11/2006, 14h02
  5. écrire des entiers dans un fichier
    Par seb__ dans le forum C
    Réponses: 3
    Dernier message: 15/10/2006, 18h32

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