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 :

Probleme de cast


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Probleme de cast
    Bonjour à tous,

    je travaille, dans le cadre d'un projet, sur un simulateur en C, donc j'ai créé un tableau de 14 octet (unsigned char) qui représente la trame à émettre, ensuite j'ai envoyé cette information ( qui vaut 7) à un autre PC via RS232, quand je reçoit la donné je dois la convertir au double donc j'ai écrit le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unsigned char* pBuffer;// le buffer qui reçoit la donnée
    double dValue;
    dValue = *((double*)pBuffer);
    quand j'évalue la valeur de dValue je trouve 5.6584940e-256 est-ce que quelqu’un a une explication? Merci d'avance.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    14 octets pour faire un double ? As-tu regardé ce que te donne sizeof double ?

    As-tu vérifié la manière de coder un flottant à partir d'octets ?

    As-tu pensé à l'endianness ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Bonjour Bktero,
    je rectifie la donnée est de 8 octet.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Ce que tu peux faire c'est décomposer ton problème :

    - D'abord t'assurer que la transmission fonctionne :
    Le programme émetteur pourrait écrire sur une sortie de déboguage le contenu, en hexadécimal, de la trame envoyée.
    Le programme récepteur pourrait faire de même avec ce qu'il a reçu.
    Si tu compares les deux sorties hexadécimales, tu vas savoir au moins si la transmission fonctionne.

    - Ensuite comprendre pourquoi la conversion produit ce résultat :
    La norme ieee754 explique comment sont représentés les nombres en virgule flottante en mémoire : http://fr.wikipedia.org/wiki/IEEE_754
    Comme dit Bktero, tu peux aussi avoir un problème d'endianness, c'est à dire la façon que ton processeur a de stocker une valeur en mémoire (poids fort en premier, poids faible en premier). Ce problème devrait aussi apparaître si tu transmets une variable "int".

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Merci bien, j'ai fait des recherches et j'ai compris la provenance du problème. j'ai une autre question:
    je voulais affecter un tableau de unsigned char à un autre, et j'ai eu le problème suivant : l'expression doit être une valeur modifiable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    unsigned char * tab;
    unsigned char * pBufferHelp;
     
    for(int iIncr=0; iIncr <8; iIncr++)
    {
         tab[iIncr+2]<<3 & 0xF8  | tab[iIncr+3]>>5 & 0x07 = pBufferHelp[iIncr]; 
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Merci bien , j'ai trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int iIncr=0; iIncr <iDataLenght; iIncr++)
    {
    	 tab[iIncr+2] |= pBufferHelp[iIncr]>>3 & 0x1F; 
    	 tab[iIncr+3]  = pBufferHelp[iIncr]<<5 & 0xE0;
     
     
    }

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

Discussions similaires

  1. Probleme de cast de string en int
    Par Oberown dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2006, 12h48
  2. Réponses: 12
    Dernier message: 25/07/2005, 15h49
  3. [VB.NET][dataset][datagrid] probleme de Cast
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2005, 15h18
  4. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 09h43
  5. probleme de cast
    Par gaut dans le forum C++
    Réponses: 9
    Dernier message: 06/08/2004, 19h43

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