Conversion unsigned int
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Conversion unsigned int



  1. #1
    invitead51e543

    Conversion unsigned int


    ------

    Bonjour à tous, j'espère que vous allez bien.

    Dans un programme en C, je souhaite convertir un unsigned int (0 à 255) en un réel (0 à 100).
    Le seul moyen est d'utiliser une formule mathématique?Ou il existe une subtilité du langage que je ne connais pas?

    Merci d'avance.
    Bonne journée.

    -----

  2. #2
    remy01

    Re : Conversion unsigned int

    Bonjour,
    si je me rappelle bien, il faut voir du côté des conversions de type Cast .
    A+ ....Rémy.

  3. #3
    gienas
    Modérateur

    Re : Conversion unsigned int

    OBonjour flolajorasse et tout le groupe

    Citation Envoyé par flolarajasse Voir le message
    ... je souhaite convertir un unsigned int (0 à 255) en un réel (0 à 100) ...
    Hum! Pas trop claire la demande.

    Que signifie dans ton esprit "convertir"?

    int est un entier, qui plus est, dans ton cas, tient sur un octet.

    Un réel, c'est un float, avec des décimales, qui tient sur plus que 8 bits. Pourtant, "venant" d'un int (ou d'un char), il ne peut avoir de décimale, ou plutôt la décimale est nulle.

    Que cherches-tu à faire au juste?

    S'il est "exigé" dans une expression qu'un terme soit float alors qu'il n'y est pas, le cast comme déjà dit le permet:

    y=(float) caractere;

    En supposant que caractere est déclaré int.


    Edit: j'ai oublié de "commenter" mon écriture.

    caractere est déclaré int, mais j'ai besoin de calculer une expression y qui doit utiliser la variable caractere, mais cette dernière doit avoir le format float.

    L'expression (float) caractere transforme par exemple 10 en 10.0 pour calculer y.
    Dernière modification par gienas ; 29/10/2014 à 15h53.

  4. #4
    invitead51e543

    Re : Conversion unsigned int

    Oublie cet exemple, c'était juste un exemple et ne correspond pas à ma demande finale.

    Le but à terme est d'avoir une entrée sur mon PIC sur 10 bits, et la "convertir" afin d'avoir une sortie sur 14 bits :

    Exemple : En entrée, j'ai 0 : sortie j'aurais 0
    En entrée j'ai 2^10 = 1023 : en sortie j'aurais 2^14 = 16383

    C'est plus clair?

    Faut-il que je coupe mes 2 variables en mots de 8 bits?Je ne sais pas trop comment procéder.

  5. A voir en vidéo sur Futura
  6. #5
    invitee05a3fcc

    Re : Conversion unsigned int

    Attendre la réponse #4 pour avoir le pourquoi du comment ... et qui n'a rien à voir avec le titre !

  7. #6
    invitead51e543

    Re : Conversion unsigned int

    En effet, le titre n'est pas le bon, et n'a effectivement rien à voir avec ma demande finale.

    Je pensais que le raisonnement était le même pour tous les types de conversions, donc je croyais plus sage de commencer par une conversion avec un unsigned char (en effet, je me suis trompé dans le titre ) en un décimal de 0 à 100.

  8. #7
    gienas
    Modérateur

    Re : Conversion unsigned int

    Citation Envoyé par flolarajasse Voir le message
    ... C'est plus clair? ...
    Pas du tout, c'est encore pire.

    Outre qu'il n'y a aucun rapport entre titre et question initiale, je ne vois pas le rapport entre les données portées par le mot de 10 bits, et son "équivalent" ramené à 14 bits.

    À part le zéro, tes exemples sont faux (de 1 à chaque fois), et les valeurs que tu donnent ne font apparaître que des "1" en sortie.

    Il me semble que tes questions sont à revoir et à reformuler.

  9. #8
    jiherve

    Re : Conversion unsigned int

    Bonjour,
    en fait au plus simple il suffit de décaler a gauche de 4 places ou de multiplier par 16 en entier mais la valeur max sera 16368 si le max de l'entrée est 1023.
    On peut améliorer en faisant sortie = round(float(entrée)*(16383.0/1023.0)).
    JR
    l'électronique c'est pas du vaudou!

  10. #9
    invite0bbe92c0

    Re : Conversion unsigned int

    Quelque chose comme cela :

    Code:
    			ulong Max14 = 0x3FFF;
    			ulong Max10 = 0x03FF;
    			float step = Max14 / Max10;
    			ulong valIn14Bits = (ulong)(input * step);

Discussions similaires

  1. signed unsigned std_logic_vector vhdl
    Par invite938b5933 dans le forum Électronique
    Réponses: 1
    Dernier message: 13/07/2010, 21h26
  2. [C] - Conversion type unsigned int pour affichage sur modules 7 segments
    Par invite3c35244f dans le forum Électronique
    Réponses: 4
    Dernier message: 08/07/2010, 14h59
  3. Calcul unsigned int pic18f4420
    Par invitea6e03a7f dans le forum Électronique
    Réponses: 5
    Dernier message: 19/05/2010, 17h28
  4. unsigned demande explication dans programme
    Par inviteac751535 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/05/2010, 00h06
  5. affecter les ports d'un pic à un unsigned int ou autre???
    Par invite0b3246fe dans le forum Électronique
    Réponses: 14
    Dernier message: 29/05/2006, 10h30
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...