Unsigned char

choui Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
jihelge Messages postés 75 Statut Membre -
Bonjour,
comment définir un entier signé ou non signé en langage C? Comment calculer l'équivalent en caractère non signé d'un nombre en base 10?
Configuration: Windows Vista
Firefox 2.0.0.16

2 réponses

  1. jihelge Messages postés 75 Statut Membre 7
     
    Je ne sais pas ce que tu veux faire mais :
    Unsigned char représente un nombre pouvant sur 8 bit pouvant varier de 0 à 255

    donc en fait si j'écris :
    unsigned char toto= 65;
    fprintf(stdout,"%c\n",toto);

    J'obtiendrai la lettre "A" à l'affichage car toto à pris la valeur du code ASCII de la lettre A, B étant 66 etc..

    Si tu as un calcul du type
    int b;
    b= fonction_bidon_de_calcul();
    toto= (unsigned char) b ;

    frprintf(stdout,"%i %c\n",b,toto);

    Tu obtiendra le code et l'équivalent caractère
    Attention aux bornes l'alphabet ASCII est limité et tout ne s'imprime pas ou peut créer des dégats suivant l'environnements, en effet certains code ou séquences de codes correspondent à des événements (notamment sous UNIX ou LINUX) (13=retour chariot, 10=à la ligne, 4=Control D= SIGKILL....).

    En recvanche si ton objectif est transformer
    int toto=128; //non imprimable code binaire 0111 1111 = x7F
    unsigned char chaine[5]={""};//chaine vide

    de telle sorte que
    chaine à la fin contienne "128"

    le mieux c'est
    sprintf( chaine ,"%i",toto);
    Alors chaine[0] contient "1" valeur 0x31
    chaine[1] contient "2" valeur 0x32
    chaine[2] contient "8" valeur 0x38
    chaine[3] contient "\0" valeur 0 indicateur fin de chaine

    Attention au signe et à la longueur de la chaine en fonction de la taille du nombre à représenter
    8
    1. Utilisateur anonyme
       
      À qui t'adresses-tu en disant "tu"?
      Si c'est moi, je sais très bien ... un unsigned char c'est entre 0 et 255, alors qu'un char de -127 à 128 (ou -128, 127, jsais jamais) pour des même représentations binaires
      -1
      1. jihelge Messages postés 75 Statut Membre 7 > Utilisateur anonyme
         
        Non, a Choui.
        -1
  2. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonsoir,
    unsigned int ou int.
    Pour la conversion, tu peux utiliser la fonction sprintf (regarde le manuel pour plus de détails).

    Cordialement,
    1
    1. Utilisateur anonyme
       
      J'ai la flemme de tester ça, je post donc sans même avoir vérifié... mais il me semble qu'un simple cast suffit.

      Genre :

      int a = -5;
      unsigned int b;
      b = (unsigned int) a;
      -1