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 :

lire le Float qui correspond à 4 octets


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut lire le Float qui correspond à 4 octets
    Bonjour

    J'arrive à retrouver les 4 byte qui forment un float en utilisant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] byteArray = BitConverter.GetBytes(monFloat);
    J'ai besoin de faire la manip inverse et je n'arrive pas à trouver la méthode qui peut m'aider.

    J'ai un tableau de char qui contient 4 octets qui forment un float et j'ai besoin de lire ce float.

    Merci par avance pour votre aide

  2. #2
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    j'ai un tableau de byte, pas de char, pardon (C quand tu nous tiens...)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Essaies avec :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
          float f = BitConverter.ToSingle(byteArray, 0);

  4. #4
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Super cela fonctionne ! Merci

    J'ai par contre un problème de "Endianness" si j'ai bien compris mon problème.
    Dans un sens je place dans mon tableau les 4 octets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                byte[] byteArray = BitConverter.GetBytes(nombreFloat);
    OutBuffer[i++] = byteArray[3];
    OutBuffer[i++] = byteArray[2];
    OutBuffer[i++] = byteArray[1];
    OutBuffer[i++] = byteArray[0];
    Ma carte electronique qui récupère ce tableau arrive a lire ces 4 octet en tant que Float nickel.

    Dans l'autre sens, si le pc récupère le tableau de byte et que je vais lire la valeur du float avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monFloat = BitConverter.ToSingle(InBuffer, i);
    ca ne fonctionne pas ! Il me faut inverser l'ordre des 4 octets !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    InBuffer[i + 4] = InBuffer[i];
    InBuffer[i + 5] = InBuffer[i+1];
    InBuffer[i + 6] = InBuffer[i+2];
    InBuffer[i + 7] = InBuffer[i+3];
    InBuffer[i+3] = InBuffer[i + 4];
    InBuffer[i+2] = InBuffer[i + 5];
    InBuffer[i+1] = InBuffer[i + 6];
    InBuffer[i]   = InBuffer[i + 7];
    Ai je une solution plus élégante que d'inverser l'ordre des 4 octets ?

    Merci

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Pour inverser un tableau, tu peux utiliser la méthode Reverse :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] arrayRev = array.Reverse().ToArray();

  6. #6
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    merci

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

Discussions similaires

  1. Lire un fichier qui ne se trouve pas dans la webapps
    Par sorilazer dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 31/08/2007, 13h48
  2. lire un waveformatex qui peut etre compressé
    Par delfare dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 25/01/2007, 22h11
  3. Réponses: 2
    Dernier message: 25/09/2006, 13h04
  4. std::string + lire trois floats
    Par Rodrigue dans le forum SL & STL
    Réponses: 9
    Dernier message: 28/04/2006, 17h01
  5. Prendre la page qui correspond au URL fournit
    Par moniphal dans le forum Web
    Réponses: 4
    Dernier message: 28/09/2005, 18h58

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