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 un tableau de char en float


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut convertir un tableau de char en float
    Bonjour a tous,

    voici mon petit problème,
    je récupère 4 octets provenant d'un équipement dans un tableau de char.
    ces 4 octets représente en réalité un float.

    comment puis je convertir ce tableau de char en un float ?

    j'ai bien tenté de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (unsigned int i =0; i<4; i++) 
    {
     result = result | tableau[i]; 
    result<<8;
    }
    Mais je n'obtient pas le résultat souhaité.

    Merci d'avance.

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu veux convertir (c'est quoi le format en entree?) ou tu veux le float dont la representation est donnees par des 4 char? Dans ce dernier cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float f;
     
    memcpy((void*)&f, (void*)tableau, sizeof f);

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut
    Je te remercie Jean-Marc.Bourguet ta solution à parfaitement fonctionné et m'a beaucoup aidé.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Est-ce qu'un reinterpret_cast ne ferait pas l'affaire également ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Est-ce qu'un reinterpret_cast ne ferait pas l'affaire également ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float f = *reinterpret_cast<float*>(tableau);
    est possible mais suppose qu'il n'y a pas de problemes d'alignement. (Il y a aussi en general un risque de manquement aux regles d'alias, mais dans ce cas je n'en vois pas).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je suis dans le même cas, mais en ce qui me concerne, cette solution ne fonctionne pas.

    J'ai un tableau d'octets récupéré via une connexion avec un instrument. Ce tableau représentes des valeurs codées en float sur 4 octets.

    Je dois donc convertir les groupes de 4 octets en float, mais aucune des solutions envisagées ne fonctionne.

    J'ai essayé le cast du C, le reinterpret_cast, ainsi que la solution que tu as proposé plus haut mais rien de tout cela n'a fonctionné correctement. A chaque fois, j'obtient des valeurs complètement incohérentes (voire absurdes).

    J'ai même essayé une méthode moins fine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //     array est un tableau de 4 unsigned char
    float* pow;
    pow = array;
    Je ne sais plus quoi essayer d'autre.

    Serais-je obligé d'écrire moi-même l'algorithme de décodage d'un float ? Franchement, je préférerait éviter car ma compréhension limitée de ce système de codage en ferait une source d'erreurs à n'en plus finir.
    Dernière modification par Invité ; 09/08/2012 à 10h59.

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

Discussions similaires

  1. Convertir un tableau de char en byte
    Par altahir007 dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/09/2011, 14h55
  2. prob string a convertir en tableau de char
    Par lapinette dans le forum Débuter
    Réponses: 11
    Dernier message: 11/06/2010, 08h42
  3. concaténation d'un tableau de char en float
    Par tymop dans le forum Débuter
    Réponses: 5
    Dernier message: 22/03/2009, 22h37
  4. convertir un tableau de caractère en float
    Par zerocoolyoussef dans le forum C
    Réponses: 3
    Dernier message: 20/03/2006, 22h27
  5. Réponses: 1
    Dernier message: 13/10/2005, 15h10

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