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

Python Discussion :

Conversion nombre vers virgule fixe (8.8 fixed point)


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Conversion nombre vers virgule fixe (8.8 fixed point)
    Bonjour à tous,

    Je n'y connais pas grand chose en arithmétique et je suis perdu.

    je tente de faire fonctionner un capteur de température/humidité en python, pour ce faire je dois convertir un nombre (ici en HEX) en "8.8 fixed point".

    J'ai les exemples suivants dans la doc :
    0x1147 -> 17.12
    0X35D7 -> 56.04

    Est-ce que quelqu'un pourrait me donner une piste pour me dire comment faire ça en python?

    D'avance merci pour votre aide

  2. #2
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    D'après ce que j'ai compris, pour convertir un nombre 8.8 fixed point en hexadécimal, il faut le passer de l'échelle [0,1] à l'échelle [0,256] qui est celle des ordinateur (donc 0->0, 0.5->128, 1->256,...), en multipliant ce nombre par 256, et ensuite on converti en hexa la partie entière du résultat obtenu (il y aura toujours des approximations car la mémoire de l'ordi n'est pas infinie !). Donc en python, pour convertir un nombre x (8.8 fixed point) en hexa, il faut faire hex(256*x) ; à l'inverse pour obtenir un 8.8 fixed point à partir d'un hexa h, il faut faire int(h)/256.
    Il y a par contre quelque chose d'étrange dans les exemples que vous donnez (peut-être due à l'approximation ?), car si on fait int(0x1147)/256, on obtient 17.28 .
    voici le lien vers un article qui traite de la question: http://www.hugi.scene.org/online/cod...20cmtadfix.htm
    (voici un passage de l'article: "For example, the 8.8 fixed point number 1840 hex is the real number 1840 hex / 256 = 24.25.", ce qui donne en python int(0x1840)/256=24.25 .)
    Bon courage

  3. #3
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Hello Racine Carrée

    Merci pour ta réponse, cela semble presque trop simple

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

Discussions similaires

  1. Conversion Nombre Vers Texte
    Par Prisson dans le forum C#
    Réponses: 2
    Dernier message: 06/07/2016, 14h12
  2. Nombres en virgule fixe
    Par Zhangdar dans le forum C
    Réponses: 8
    Dernier message: 16/05/2010, 23h04
  3. représentation des nombres a virgules fixe en systemC
    Par MohEllayali dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 10/03/2009, 22h50
  4. rendre un nombre de virgule flottante en virgule fixe
    Par mitnick2006 dans le forum Général Java
    Réponses: 3
    Dernier message: 15/08/2008, 21h44
  5. Conversion nombre vers texte
    Par lebossejames dans le forum Assembleur
    Réponses: 1
    Dernier message: 23/02/2007, 16h08

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