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

Langage C++ Discussion :

fonction 4 octets en float


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 62
    Par défaut fonction 4 octets en float
    Bonjour,

    Comme l'indique l'intitulé, j'aimerai savoir s'il existe une méthode pour convertir 4 octets en un float. Pour être plus claire.

    J'ai 4 variables qui récupère 4 octets.

    Mais ces octets sont en fait, un réel à virgule flottante codé sur 32 bits (4 octets je me répète...).

    Existe il une méthode/fonction qui permet cette conversion? Je pense qu'il est possible d'interpréter ces valeurs pour arriver au résultat via un code, mais s'il y a des gens une fonction déstinée...

    Merci d'avance pour vos réponses.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    La seule méthode à laquelle je pense:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    unsigned char o1;
    unsigned char o2;
    unsigned char o3;
    unsigned char o4;
     
    // Remplissage des variables 
     
    float f = o1 << 24 | o2 << 16 | o2 << 8 | o4;
    Je ne doute pas qu'il manque des cast et peut être même des parenthèses, mais le principe est là.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 62
    Par défaut
    Merci, effectivement l'idée est là je pense aussi.. Mais en revanche, je n'ai pas le bon résultat. Tu pourrais m'expliquer ton code afin que je puisse la modifier pour avoir le bon résultat?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Les '<<' décalent les bits vers la gauche
    Les '|' font un OR binaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float f =((float)o1 << 24) | ((float)o2 << 16) | ((float)o2 << 8) | (float)o4;
    Peut être que cela est mieux (pour que le décalage de bits, ne perdent pas de bit à cause d'être sur un octet et non 4.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 62
    Par défaut
    J'ai testé et ça ne marche pas...

    error: invalid operands of types 'float' and 'int' to binary 'operator<<'|

    Je pense qu'on ne peut pas faire d'opération | sur des float. Je pense que l'erreur est là.

  6. #6
    screetch
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    union
    {
      char bytes[4];
      float v;
    };

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

Discussions similaires

  1. Dégrossir ma fonction qui lit des floats.
    Par disturbedID dans le forum C
    Réponses: 6
    Dernier message: 16/04/2007, 02h08
  2. Conversion float -> n octets
    Par Fabllot dans le forum C
    Réponses: 4
    Dernier message: 22/05/2006, 20h00
  3. octet en double ou en float ??
    Par lykim dans le forum Langage
    Réponses: 16
    Dernier message: 16/05/2006, 23h43
  4. fonction qui transforme un entier en octet
    Par personne64 dans le forum C
    Réponses: 43
    Dernier message: 10/05/2006, 15h36
  5. Réponses: 27
    Dernier message: 13/01/2006, 23h46

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