Varibale long en caractère
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Varibale long en caractère



  1. #1
    invited6c29c6d

    Varibale long en caractère


    ------

    Bonjours à tous.

    J'ai un petit souci pour transformer une variable de 32bits en caractères.

    J'ai essayé d'utiliser la commande sprintf mais sa ne fonctionne pas!

    Est-ce que quelqu'un pourrait me donner un coup de pouce?


    je travaille avec mplab sur un pic18f

    Merci

    -----

  2. #2
    gienas
    Modérateur

    Re : Varibale long en caractère

    Bonjour wintsif et tout le groupe

    Citation Envoyé par wintsif Voir le message
    ... souci pour transformer une variable de 32bits en caractères ...
    Pourrais-tu être un peu plus précis sur ce que tu cherches?

    Citation Envoyé par wintsif Voir le message
    ... J'ai essayé d'utiliser la commande sprintf mais sa ne fonctionne pas! ...
    Peux-tu donner ton code et les résultats affichés, pour essayer de comprendre quelle est l'erreur que tu commets?

  3. #3
    invited6c29c6d

    Re : Varibale long en caractère

    void fonction (unsigned long data)
    {
    unsigned char tableau [12] = {0};
    sprintf(tableau,(far rom signed char*)"%d ",data);

    }

    (dans la fonction data = 22050)

    tableau [0]= 22050;

    au lieu

    tableau [0] = 2
    tableau [1] = 2
    tableau [2] = 0
    tableau [3] = 5
    tableau [4] = 0
    .
    .
    .

    j'ai fait des tesst en écrivant comme ceci:
    sprintf(tableau,(far rom signed char*)"%d ",22050);
    et ça joue!

  4. #4
    invited6c29c6d

    Re : Varibale long en caractère

    J'ai trouvé!

    Voici comment j'ai récris ma fonction

    void fonction (unsigned long data)
    {
    unsigned char tableau [12] = {0};
    unsigned char tmp =0;

    tmp=data;
    sprintf(tableau,(far rom signed char*)"%d ",tmp);
    }


    là sa joue! Si quelqu'un a une explication?

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Varibale long en caractère

    Avec un peu de chance, tu devrais disposer de fonctions comme itoa() ou mieux ltoa() qui convertit un long en chaine.

    A+

  7. #6
    gienas
    Modérateur

    Re : Varibale long en caractère

    Je n'ai pas d'explication, ne sachant pas ce qui fonctionne correctement ni ce qui ne fonctionne pas. Par contre quand tu écris:



    Code:
    unsigned char tableau [12] = {0};
    
       tableau [0]= 22050;
    je me demande bien ce que va contenir le premier octet de tableau, qui est supposé ne contenir qu'un char.

    Ce dont je suis sûr, c'est que tableau ne contiendra pas 22050.

  8. #7
    Jack
    Modérateur

    Re : Varibale long en caractère

    Exact.

    Je n'ai pas vérifié, mail il contiendra 22050 modulo 256 logiquement.

    A+

  9. #8
    Jack
    Modérateur

    Re : Varibale long en caractère

    Code:
    tableau [0] = 2 
    tableau [1] = 2
    tableau [2] = 0
    tableau [3] = 5
    tableau [4] = 0
    Je ne comprends pas ça non plus. Il me semblait que tu voulais convertir en texte, donc j'aurais plutôt pensé que tu voulais obtenir ceci:
    Code:
    tableau [0] = '2 '
     tableau [1] = '2'
     tableau [2] = '0'
     tableau [3] = '5'
     tableau [4] = '0'
    A+

  10. #9
    invited6c29c6d

    Re : Varibale long en caractère

    oui oui c'est bien ce que tu as écrit que j’obtiens. C'est moi qui est oublié de rajouté ' '.

  11. #10
    Jack
    Modérateur

    Re : Varibale long en caractère

    Et donc, pour résumer, on en est où? Tu as obtenu tes réponses.

    Si non, précise bien le problème.

    A+

  12. #11
    invited6c29c6d

    Re : Varibale long en caractère

    En résumé la commande sprintf ne peut pas convertir un mots de 32bits.

    c'est pour cela que dans le code si dessous, je me sers d'une variable intermédiaire tmp qui travail sur 16bits, se qui me permet de l'utilisé dans la commande sprintf.


    void fonction (unsigned long data)
    {
    unsigned char tableau [12] = {0};
    unsigned int tmp = 0;

    tmp=data;
    sprintf(tableau,(far rom signed char*)"%d ",tmp);
    }

  13. #12
    Jack
    Modérateur

    Re : Varibale long en caractère

    Tu n'as pas dit si les fonctions que je t'ai proposées convenaient

    Pour sprintf, en y repensant, pour un long int, c'est %ld et non pas %d dans la chaine de formatage.

    A+

Discussions similaires

  1. Ajouter un caractère
    Par dhmo dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 19/07/2010, 01h42
  2. [Génétique] Caractère
    Par invite081413b0 dans le forum Biologie
    Réponses: 2
    Dernier message: 24/05/2010, 12h29
  3. Hydroxydes : caractère acido-basique et caractère métallique
    Par invitea691eeb2 dans le forum Chimie
    Réponses: 4
    Dernier message: 16/02/2010, 20h45
  4. [Génétique] Caractère
    Par invite2c8432b8 dans le forum Biologie
    Réponses: 5
    Dernier message: 18/04/2008, 13h15
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...