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

Arduino Discussion :

Conversion 20 bits d'un long


Sujet :

Arduino

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Conversion 20 bits d'un long
    Bonjour,

    Je tente de convertir un long en 20 bits.
    Voila ce que j'emploie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    long valeur;
    char valeur_binaire[21] = {0};
    char* sortie;
     
    valeur = 1; // pour l'exemple
    valeur = valeur + 2^20; // ça me permet d'avoir (en theorie...) le bit de poids fort à 1, 19 bits à 0 et 1 bit à 1 (soit ma valeur) et donc d'avoir ma valeur bien sur au moins 20 bits (sinon j'aurais simplement 1 en binaire et non pas 00000000000000000001)
    itoa(valeur, valeur_binaire, 2); // j'écris ma valeur en base 2, sur 21 bit (cf remarque supérieure)
    sortie = valeur_binaire + 1; // je viens pointer dans le tableau à partir de l'élément 1 et non 0 pour garder 20 bits seulement et virer le 1 du poids fort.
     
    for (byte i = 0; i < 20; i++) {
       Serval.println(sortie[i]);
    }
    Mais en sortie je n'ai rien à l'affichage (string vide). J'ai affiche "valeur binaire" et j'ai 1 et non 00...001.

    Qu'ai je mal fait ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 643
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 643
    Points : 11 131
    Points
    11 131
    Par défaut
    bonsoir,

    est-ce que ceci peut t'aider :
    Code C : 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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main()
    {
        long valeur;
        char valBin[] = "00000000000000000000\0";  // 21 caractères avec le \0
        char n[2];
     
        valeur = 12345;
     
        for (int i=0; i<20; i++)
        {
            sprintf(n, "%ld", valeur & 1);
            valBin[i] = n[0];
            valeur = valeur >> 1;
        }
     
        printf("Résultat : %s\n", valBin);
     
        return 0;
    }

Discussions similaires

  1. OS 64 bits int ou long
    Par bioinfornatics dans le forum C#
    Réponses: 5
    Dernier message: 12/04/2009, 14h19
  2. Conversion d'un String en Long et inversement
    Par KristofNancy dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2008, 16h28
  3. Conversion d'un String en long
    Par arsenik7 dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2006, 12h51
  4. [UDP] Conversion d'entier ou de long en byte[]
    Par joho dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/02/2006, 21h06
  5. [debutante] Conversion 8 bits en 16 bits
    Par bolo dans le forum Algorithmes et structures de données
    Réponses: 28
    Dernier message: 07/12/2004, 00h20

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