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

C++ Discussion :

Conversion Texte en Hexadécimal (char*)


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Conversion Texte en Hexadécimal (char*)
    Bonjour,

    Je suis confronté à un problème de conversion de fichier depuis un certain temps et je trouve aucune solution, voila mon problème:
    Je souhaite faire une vérifiquation dans une image jpeg, pour çà il me faut convertir le fichier en hexa, comme si je l'ouvrais avec un éditeur hexa.
    Or pour lire mon fichier j'utilise un char :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char * buffer;
    pFile = fopen (filename, "r");
    fgets (buffer, 5, pFile);
    et je ne trouve aucune méthode me permettant de faire une conversion de ce type sur un char (genre "<< hex" pour un int)
    Pour le moment j'utilise purple editor pour faire la conversion "texte -> hexa" pour pouvoir travailler sur mon image mais il me faut absolument une méthode pour le faire directement dans mon projet.

    si quelqu'un pouvais m'indiquer une méthode ou une fonction pour réaliser cela çà me serait d'une très grande aide

    Merci à tous.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    L'héxadécimal n'est qu'une représentation. Les données de ton fichier seront toujours les mêmes, que tu les lises en binaire, décimal, octal, héxadécimal ou que sais-je. Alors es-tu certain de devoir passer par une conversion hexa ?

    Si c'est le cas tu as tout ce qu'il faut dans la FAQ C++

    http://c.developpez.com/faq/cpp/?pag...to_stream_hexa

    De plus, en C++ on oublie toutes ces fonctions C et on utilise fstream pour travailler sur les fichiers.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le problème est que quand je lis mon fichier avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstream file (filename, ios::in|ios::binary|ios::ate);
    je ne peux le lire qu'avec des char et il apparait toujours comme si c'etait un simple fichier texte genre :

    ÿØÿà JFIF    ÿÛ C 
     
      ÿÛ C  
    ºU¾2õ:°áeôÛºsyC½OFùøë½–í³ñ*ŸBäéO‹Ü¸^nÞ6²©Ð±ª

    totalement inexploitable, il me faudrait avoir :

    FFD8FFE000104A46494600010101004800480000FFDB004300050...

    pour reperer les marqueurs "FFD8, FFD9..." et la valeur de leurs données : 000104A464946000101010...

    or que çà soit à la lecture du fichier ou par une conversion ultérieure je n'arrive absolument pas à ce résultat.
    et je ne vois pas comment lire le fichier en binaire si c'est la solution et je ne sais pas quel autre type que le char me permettrais de travailler par la suite.
    De plus j'avoue ne pas très bien dicerner toutes les subtilités des bases binaire et hexa et l'information que tu me donne comme :

    http://c.developpez.com/faq/cpp/?pag...RINGS_strtonum

    me donne une solution en int or je voudrait pourvoir toujours travailler sur des char donc une conversion "char -> char" avec le bon format en sortie
    J'espere ne pas dire n'importe koi ou passer a coté de la solution si tu me la déja donnée.

    pourrais-tu m'éclairer un peu plus ?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char * buffer; 
    pFile = fopen (filename, "r"); 
    fgets (buffer, 5, pFile);
    buffer est un pointeur sur char, pas un tableau de char. Il n'y a pas de place allouée pour ranger les caractères lus
    Ecrire
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    oui j'ai oublié çà lors de mon c/c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char * buffer;
    pFile = fopen (filename, "r");
    buffer = new char [5];
    fgets (buffer, 5, pFile);

  6. #6
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Remarque complémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fgets (buffer, 5, pFile);
    Il faudrait lire le fichier en mode binaire, l'image JPeg n'est certainement pas un fichier texte structuré en lignes

    Plus important :
    ÿØÿà JFIF    ÿÛ C 
     
      ÿÛ C  
    ºU¾2õ:°áeôÛºsyC½OFùøë½–í³ñ*ŸBäéO‹Ü¸^nÞ6²©Ð±ª

    totalement inexploitable, il me faudrait avoir :

    FFD8FFE000104A46494600010101004800480000FFDB004300050...
    Ces signes cabalistiques sont obtenus en interprétant les données comme des caractères, pas commes des octets "numériques" : On voit que la séquence ASCII "décodable facilement" JFIF donne en binaire 4A464946 qui se trouve bien dans la séquence espérée.
    Les données sont apparemment correctement lues mais elles doivent être considérées et traitées non comme des caractères ASCII mais des entiers unsigned char
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Un char est déjà un nombre.
    Mais si tu veux forcer l'affichage avec "flux << std::hex << le_car;", tu peux avoir besoin de le caster en int.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. conversion texte date
    Par shinta dans le forum Access
    Réponses: 5
    Dernier message: 10/08/2008, 21h20
  2. Conversion texte Ascii vers Image ou Pdf
    Par davydreyAXESS dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2006, 15h45
  3. Conversion CString en const char*
    Par LRobi dans le forum MFC
    Réponses: 8
    Dernier message: 19/07/2005, 12h12
  4. conversion text vers integer
    Par jawad.t dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 10/06/2005, 20h35
  5. [C++] Conversion de int en char* ou SetDlgItemText()
    Par lastcheper dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2005, 17h46

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