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 :

Convertir uint8_t en char[]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut Convertir uint8_t en char[]
    Bonjour,

    J'ai un petit problème : J'ai un bon nombre de usigned int "uint8_t" et je souhaiterais les mettre
    en char pour pouvoir les concaténer (ce sont des btis) ensuite seulement je ne vois pas du tout comment faire.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Dans le .h
    uint8_t valExp;
     
     
    //Dans le .c
    valExp = tps->msie; // valExp contient 010010 
     
    char valExpChar[6];
     
    //Je souhaite juste mettre valExp dans valExpChar[6];

    Merci pour votre aide parce que la je suis bloqué bêtement

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Tu es bien conscient que chaque char est un octet (byte), constitué de 8 bits?

    char valExpChar[6] est un tableau de 6 octets = 48 bits
    tandis que uint8_t est un entier de taille suffisante pour contenir 8 bits et interprété comme un entier non signé.

    Il va falloir boucler sur chaque bit de valExp pour affecter la valeur à une case du tableau.

    cela se fera avec les operations bit-à-bit (probablement & et <<)

    valExpChar[i] = valExp & (1<<i);


    Sinon, si tu veux coller valExp dans valExpChar[6] ca ne marcheras pas car la case 6 n'est pas déclarée... c'est un accès mémoire frauduleux, causant (aléatoirement) une segmentation fault.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut
    Conscient je ne sais pas, j'ai vraiment pas l'habitude de faire du C et les opérations bit-à-bit j'essaye d'éviter comme je suis pas trop au point ^^.

    Le fait qu'en C il n'y ai pas de String et qu'on puisse pas faire un ".toString()" me perturbe beaucoup ! Auriez-vous un exemple simple d'opération bit-à-bit car je suis un peu perdu.

    Sinon ne peut-on pas "concaténer" des uint8_t (pas additionner) ensemble?
    Car en fait, je souhaite juste récupérer plusieurs valeurs qui sont des uint8_t pour les concaténer ensemble et les afficher ultérieurement.

    Merci de votre réponse, j'essaye de regarder les opérations bit-à-bit

  4. #4
    Expert confirmé
    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
    Par défaut
    La question n'est pas très précise, mais, comme je la comprend, il suffit de mettre le premier uint_8 dans valExpChar[0], le suivant dans valExpChar[1] etc. (et si on veut en faire une chaine de caractères ajouter un 0 à la fin)

    A noter que la présence de la définition de valExp dans un .h est anormale : un .h ne doit pas comporter de définition de variables. Il peut comporter une déclaration comme extern uint8_t valExp; avec la définition de valexp figurant dans un .c

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut
    Merci beaucoup à vous deux !!!

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

Discussions similaires

  1. Convertir String en Char
    Par El-Diablo- dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/04/2007, 17h20
  2. [SQL2K] Convertir un champ Char Vers un champ Date
    Par Sidi-Bou dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/01/2007, 08h45
  3. [unicode] Convertir CString en Char[]
    Par dacid dans le forum Visual C++
    Réponses: 7
    Dernier message: 31/05/2006, 09h22
  4. Convertir String en Char: comment?
    Par nmathon dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2005, 20h58
  5. Réponses: 13
    Dernier message: 06/03/2005, 15h21

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