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 :

uitoa optimisé pour µC 8 bits


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut uitoa optimisé pour µC 8 bits
    bonjour,

    j'ai fait une petite fonction qui me converti un nombre unsigned int en une chaine de caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    void uitoa(unsigned int myVal, unsigned char *myStr)
    {
    	unsigned char nbr;
     
    	if (myVal >= 10000){
    		nbr = (myVal/10000);
    		myVal -= (nbr * 10000);
    		*myStr = nbr + '0';
    		myStr++;
    	}
     
    	if (myVal >= 1000){
    		nbr = (myVal/1000);
    		myVal -= (nbr * 1000);
    		*myStr = nbr + '0';
    		myStr++;
    	}
     
    	if (myVal >= 100){
    		nbr = (myVal/100);
    		myVal -= (nbr * 100);
    		*myStr = nbr + '0';
    		myStr++;
    	}
     
    	if (myVal >= 10){
    		nbr = (myVal/10);
    		myVal -= (nbr * 10);
    		*myStr = nbr + '0';
    		myStr++;
    	}
     
    	*myStr = myVal + '0';
    	myStr++;
     
    	*myStr = '0';
    }
    => cette fonction est utilisée sur un µC 8 bits. Je suppose qu'il y a moyen d'optimiser ma fonction pour qu'elle soit encore plus rapide (et qu'elle prenne moins de place dans le code) : pouvez-vous m'aider ?

  2. #2
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nbr = (myVal/10000);
    myVal -= (nbr * 10000);
    tu peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(int i = 1000; (myVal>0)&&(i>0); i/=100, myStr++) {
           rest = myVal / i;
           myVal = myVal % i;
           *myStr = rest + '0';
    }
    *myStr = '0'

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. ça veut dire quoi (Site optimisé pour _x_) ?
    Par sami_c dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 06/08/2006, 10h56
  2. Flash pour linux 64 bits, emulateur ?
    Par kurtalis dans le forum Flash
    Réponses: 8
    Dernier message: 14/06/2006, 11h49
  3. [16F84A] Algorithme pour décoder 4 bits en 16 flags
    Par drache dans le forum Autres architectures
    Réponses: 4
    Dernier message: 16/05/2006, 18h53
  4. [Stockage] Quel SGBD optimisé pour données numériques ?
    Par hoflack dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/03/2006, 18h20
  5. Quelle compilateur pour le 64 bits ?
    Par yarp dans le forum C++Builder
    Réponses: 12
    Dernier message: 10/09/2004, 18h42

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