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 nombre flottant en octet


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut Conversion nombre flottant en octet
    Bonjour,
    j aimerais convertir un nombre flottant en 4 octets et inversement, fabriquer un nombre flottant avec 4 octets.

    Pour la conversion flottant->octet, je penserais utiliser la fonction sprintf.
    char tab[4];
    float nombre=3123;
    sprintf(tab,"%f",nombre);

    Mais je ne vois pas comment faire pour l'inverse. Faudrait il utiliser des pointeurs?

    Si quelqu'un avait une idée.
    Merci

  2. #2
    Membre régulier Avatar de Beldom
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 63
    Points : 70
    Points
    70
    Par défaut
    Tu peux créer une union il me semble.
    J'ai un trou sur la manière de l'écrire, mais ca doit être un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef union u_float_octet
    {
         char     tab[4];
         float     f;
    }                           t_float_octet
    Tu y accède ensuite en déclarant l'union :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t_float_octet my_union;
    Et tu remplis comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my_union.f = 4242;
    my_union.tab[0] = 4;
    J'espère avoir pu t'aider

    NB : Je vais aller chercher un bout de code pour vérifier la création d'une union ^^
    La balise [code] et le tag résolu, c'est bien !
    Rôliste pas toujours éclairé et fan de Star Wars

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fred677
    j aimerais convertir un nombre flottant en 4 octets et inversement, fabriquer un nombre flottant avec 4 octets.
    Ca dépend d'informations qui manquent :
    - Un nombre flottant n'occupe pas forcément 4 octets. Ca peut être plus.
    - En admettant que le type fasse 4 octets, quel codage veux-tu dans le tableau ? MSB en tête ? LSB en tête ?
    - Quelle est l'usage exact que tu veux en faire, il y a peut être d'autres solutions plus simples et plus portables.
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    Voici l'utilisation de la conversion.
    j utilise le port série du PC afin d'envoyer des valeurs (codées sur 32bits) en 4 trames de 8 bits sur un dsp par une liaison série.
    Sur le DSp, je recupère les 4 trames de 8 bits pour fabriquer à nouveau le mot de 32 bits émis.

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fred677
    Bonjour,
    Voici l'utilisation de la conversion.
    j utilise le port série du PC afin d'envoyer des valeurs (codées sur 32bits) en 4 trames de 8 bits sur un dsp par une liaison série.
    Sur le DSp, je recupère les 4 trames de 8 bits pour fabriquer à nouveau le mot de 32 bits émis.
    Ca risque d'être horriblement pas portable et très dépendant de l'architecture du PC et du DSP. Pourquoi ne pas utiliser un format texte ? Ce sera plus lent, mais beaucoup plus portable (et plus précis)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
       /* emission */
       char s[32];
       double data = 12.34;
     
       sprintf (s, "%f\n", data);
     
       char *p = s;
     
       while (*p != 0)
       {
          usart_send (port, *p);
          p++;
       }
    Je te laisse faire la réception (strtod()...)
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    Merci pour ton code mais je ne peux pas utiliser les chaines de caractères car je vais faire de l acquisistion toutes les ms de pas de valeurs.

    A+

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fred677
    Merci pour ton code mais je ne peux pas utiliser les chaines de caractères car je vais faire de l acquisistion toutes les ms de pas de valeurs.
    Alors le problème n'est pas simple...

    Il faut déterminer si les formats de données sont compatibles, puis les convertir si nécessaire et les transférer dans le bon ordre...
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Conversion nombre décimal <-> binaire (signé et flottant)
    Par lecteur1001 dans le forum Simulink
    Réponses: 12
    Dernier message: 06/01/2011, 16h49
  2. Conversion nombre décimal en virgule flottante IEEE 754 (exprimé en hexa)
    Par vinssieux dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 15/05/2008, 09h40
  3. nombres flottants arrondis aux 5 centimes
    Par nstubi dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2004, 09h02
  4. Conversion Nombre -> Texte
    Par Isis dans le forum Assembleur
    Réponses: 7
    Dernier message: 04/06/2003, 21h47
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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