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 :

Problème de tableau de caracteres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut Problème de tableau de caracteres
    Bonjour à tous,

    J'ai écris un programme qui me sort un tableau de char avec des valeurs hexadecimales.
    unsigned char out[16];

    Je voudrais convertir en binaire toutes ses valeurs. J'ai une idée mais pour cela j'ai un probleme.
    Quand je veux afficher ce tableau en hexadécimal je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i=0;i<16;i++)
    {
       printf("%02x",out[i];
    }
    Et j'obtiens donc a l'écran : 8d 5f 42 ... etc

    Mon probleme est le suivant :
    Je voudrai pouvoir m'occuper de chaque caractere un à un. C'est a dire gerer le 8, puis le d, puis le 5 ... Mais quand si je fais par exemple out[0], la il me dit que c'est '8d' et non 8 comme je le voudrai.

    J'espère que vous m'avez suivie et que vous pourrez m'aider !

    Merci

  2. #2
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    salut

    moi je te suis pas
    c'est quoi ton tableau de départ ?

    merci

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Un char est codé sur 8 bits, or un hexa décimal ne peut prendre que 16 valeurs il ne peut donc coder que 4 bits.

    Il va falloir que tu gère toi même la séparation.

    C'est pas trop compliqué :
    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
    /* retourne le premier hexa d'un char 
    par exemple retourne 3 si en entrée on a 59 (00111011)*/
    char get_first_hexa(unsigned char i)
    {
      i /= 16; /* on ne garde que les 4 bits de poids fort*/
      if ( i < 10){
        return '0' + i;
      }else{
        return 'A' + i - 10;
      }
    } 
    /* retourne le premier hexa d'un char 
    par exemple retourne B  si en entrée on a 59 (00111011)*/
    char get_second_hexa(unsigned char i)
    {
      i %= 16; /* on ne garde que les 4 bits de poids faible*/
      if ( i < 10){
        return '0' + i;
      }else{
        return 'A' + i - 10;
      }
    }
     
    int main()
    {
      printf("%X --> %c\n", 59, get_first_hexa(59));
      printf("%X --> %c\n", 59, get_second_hexa(59));
      return 0;
    }
    Dernière modification par Invité(e) ; 11/04/2008 à 09h07.

  4. #4
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    Citation Envoyé par oeil de lynx Voir le message
    Mais quand si je fais par exemple out[0], la il me dit que c'est '8d' et non 8 comme je le voudrai.
    s'il te sort 8d, cela veut dire que out[0] vaut 216. Si tu veux pouvoir interpréter les valeurs dans out comme des valeurs hexadécimales, il faut qu'elles soient comprises entre 0 et 15 (10=>a, 11=>b, ..., 15=>f). Commence donc par faire unpour vérifier cela

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Merci Mabu et Corentin, ca marche maintenant !

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

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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