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 :

Convertion de type


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut Convertion de type
    Bonjour,

    Mon problème est le suivant, j'ai un buffer sous cette forme:

    Et j'aimerai le convertir sous le type:

    Seulement je ne sais pas du tout comment faire

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    uint8 n'est pas un type primitif. Il a forcément été défini quelque-part. Je parierai pour quelque-chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef unsigned char uint8;
    La difficulté de transtyper un unsigned char en char, c'est à dire signé, est que un uint8 va de 0 à 255 et un char va de -128 à 127, alors je ne sais pas très bien ce que cela pourra donner.
    Moi, je me poserais la question, pourquoi transtyper un unsigned char en char?
    Autrement dit, qu'est-ce qui vous empêche d'utiliser vos uint8 ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Si c'est définie de cette manière alors c'est parfait je réussirai à me débrouiller avec Merci beaucoup

  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
    Citation Envoyé par Pierre Dolez Voir le message
    Moi, je me poserais la question, pourquoi transtyper un unsigned char en char
    La question posée était, si je la comprend bien, le transtypage de deux adresses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uint8* buffer
    .....
    char* buffer

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui, bien-sûr le transtypage d'une adresse, c'est à dire le transtype de l'objet pointé par un pointeur. Ce n'est pas l'adresse qui est transtypée, mais l'objet sur lequel pointe le pointeur.
    Peut-être aurais-je du répondre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    uint8 *Buffer;
    ...
    void Fonction(char *chaine); // déclaration
    // On veut appeler Fonction() et lui passer Buffer en paramètre par son pointeur
    // on pourra écrire
    char *chaine= (char*)Buffer;
    Fonction(chaine);
    // mais aussi
    Fonction((char*)Buffer);
    Est-ce cela que j'aurais dû répondre?
    Merci d'avance.
    Cordialement.

    Petit compément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void Fonction(char *ch)
    {
      printf("%s\n",ch);
    }
    int main(int argc, char* argv[])
    {
    typedef unsigned char uint8;
    uint8 *Buffer;
    Buffer =(uint8*)malloc(10 * sizeof(uint8));
      for (int i=0; i<9; i++) Buffer[i]=201+i;
      Buffer[9]='\0';
      Fonction((uint8*)Buffer);
      while (!kbhit());
    }
    Donc, j'ai supposé que unt8 était un unsigned char, mais on ne sait pas ce que Scary veut faire.
    Dernière modification par Invité ; 06/07/2010 à 13h56.

  6. #6
    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
    @ Pierre Dolez :
    .... c'est à dire le transtype de l'objet pointé par un pointeur. Ce n'est pas l'adresse qui est transtypée, mais l'objet sur lequel pointe le pointeur.
    Il faut être précis dans la formulation : on ne peut pas changer le type d'un objet. Un objet a un type donné à sa création et le conserve jusqu'à sa mort. Ce qu'on peut (parfois) faire, c'est changer le type d'une valeur (qui peut être la valeur d'un objet évidemment) pour obtenir une valeur d'un autre type.
    C'est pourquoi on ne peut écrire quelque chose comme (int)i = ..... ou ((int) i)++

    En l'occurence, dans la question posée, il s'agit bien de transtyper l'adresse de l'objet.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui, mais quelle est la réponse à la question?

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

Discussions similaires

  1. convertion de types
    Par ToTo13 dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2006, 10h21
  2. Erreur de convertion de type de données
    Par ben_skywalker dans le forum Access
    Réponses: 14
    Dernier message: 06/06/2006, 11h39
  3. [C#] Convertion de type (string/int)
    Par M1000 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/05/2006, 16h03
  4. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  5. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 14h18

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