Bonjour,
Comment convertir un caractere vers son code ascii et vice versa ?
Merci d'avance![]()
Bonjour,
Comment convertir un caractere vers son code ascii et vice versa ?
Merci d'avance![]()
Salut
La valeur ascii se trouve dans ta variable de type chartu peux y accéder via %c, %d, %x, etc.
Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 unsigned char lettre; /* Désolé pour le getchar, moi et la saisie de caractère ça fait 2 */ lettre = getchar(); printf("Caractere : %c\nCode ASCII (decimal) : %d\nCode ASCII (hexa) : %x", lettre, lettre, lettre);
Ce n'est pas du tout difficile.
Un petit exemple qui donne la lettre en fonction du code ascii :
Et inversement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char caractere=70; printf("Au code ascii %d correspond la lettre %c\n",caractere,caractere);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char caractere='w'; printf("Au caractere %c correspond le code ASCII %d\n",caractere,caractere);
Je veux que le code ascii soit enregistrer vers un int .Envoyé par Freed0
Exp:
int nbr = codeAscii("A");
char chr = caract(65);
En c, il n'y a pas de difference entre les characteres et les entiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int valeurAscii = 'A';
en fait, si tu veux faire des calculs avec le code ascii, tu n'as a la limite meme pas besoin de le convertir ! ces expressions ont du sens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char c='R'; c=c+2-'z';
Je veux affecter le code ascii d'un caracter vers une variable de type entier et pas afficher son code ascii.Envoyé par atnnn
exp:
int nbr = codeAscii("A");
char chr = caract(65);
printf("Le code ascii de %c est %d", chr, nbr);
et non pas
printf("Le code ascii de %c est %d", chr, chr);
Bah oui mais justement c'est ça le truc en C. Le %c %d ne joue que sur la représentation à l'écran. Pas besoin d'une fonction spéciale pour manipuler les codes ASCII des caractères. Pour info, un char est codé sur 8 bits et un int sur 32 bits sur x86 je crois (processeur 32 bits). Mettre la valeur d'un char dans un entier ça ne sert strictement à rien puisque les deux sont manipulables de la même façon. La table ASCII tient juste sur 8 bits par contre.
Quand tu dis je veux ça mais pas ça ça, en fait ce sont deux constructions identiques
Le charactere A est represente par 'A' et non "A" en C.
Voici deux definitions qui font ce que tu veut:
Pourquoi es-ce que ca marche? Par ce que, en C, 'A' == 65:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #define codeAscii(c) c #define caract(c) c int nbr = codeAscii('A'); char chr = caract(65); printf("Le code ascii de %c est %d", chr, nbr);
Il n'y a aucune difference entre un charactere et sa representation ascii, qui est codee sur 7 bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char chr = 'A'; if(c==65){ puts("Hello, world!"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("Le code ascii de %c est %d", 65, 'A');
Et ceci est valable pour tous les caractères ASCII (0 à 127) sur une plate-forme en ASCII (évidemment, sur une plate-forme en EBCDIC, ça ne marchera pas).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ici, des hypothèses sont faites sur les valeurs :
Sans oublier toutes les apparitions du nombre 65 dans le thread.Envoyé par jobherzt
Et je voulais surtout mettre l'accent sur le fait que ça ne marche pas forcément en ASCII étendu, principalement à cause des soucis de signe.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
et il y a les fonctions toascii() .... pour de l'ascii 7bits...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #include <ctype.h> int toascii(int c);
![]()
Rien de tel dans la bibliothèque standard du langage C. Je connaissais l'extension isascii() de Borland...Envoyé par souviron34
Quand à l' "ASCII 7-bit", c'est l'ASCII, tout simplement, je n'en connais pas d'autres...
référence toascii :Envoyé par Emmanuel Delahaye
http://www.opengroup.org/onlinepubs/...s/toascii.html
référence ascii 8 bits (ou ascii étendu) (nom de norme UTF8, nom usuel ascii 8 bits) :
http://fr.wikipedia.org/wiki/UTF-8
entre autres....
Mais je suis d'accord que c'est un abus de langage...![]()
Envoyé par souviron34
Sachant que SVID est System V Interface Definition, toascii() n'est donc pas standard, mais SUS.Derived from Issue 1 of the SVID.
http://en.wikipedia.org/wiki/List_of_C_functions
http://en.wikipedia.org/wiki/Ctype.h
Perdu, UTF-8 n'est pas l'ASCII étendu: c'est de l'unicode, et c'est un ASCII étendu, tout comme ISO 8859-1, Windows CP1252, etc.référence ascii 8 bits (ou ascii étendu) (nom de norme UTF8, nom usuel ascii 8 bits) :
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Et ? OK, c'est POSIX.1, mais ce n'est pas standard C. Il faut être précis quand on cite une fonction, sinon, on crée la confusion et ça génère des question inutiles...Envoyé par souviron34
La doc de POSIX.1 est on ne peut plus claire :
http://www.opengroup.org/onlinepubs/...s/ctype.h.html
Ce qui est noté XSI est une extension du langage C
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 DESCRIPTION [CX] [Option Start] Some of the functionality described on this reference page extends the ISO C standard. Applications shall define the appropriate feature test macro (see the System Interfaces volume of IEEE Std 1003.1-2001, Section 2.2, The Compilation Environment) to enable the visibility of these symbols in this header. [Option End] The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided. int isalnum(int); int isalpha(int); [XSI][Option Start] int isascii(int); [Option End] int isblank(int); int iscntrl(int); int isdigit(int); int isgraph(int); int islower(int); int isprint(int); int ispunct(int); int isspace(int); int isupper(int); int isxdigit(int); [XSI][Option Start] int toascii(int); [Option End] int tolower(int); int toupper(int); The following are defined as macros: [XSI][Option Start] int _toupper(int); int _tolower(int); [Option End]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XSI Extension [Option End] The functionality described is an XSI extension. Functionality marked XSI is also an extension to the ISO C standard. Application writers may confidently make use of an extension on all systems supporting the X/Open System Interfaces Extension. If an entire SYNOPSIS section is shaded and marked XSI, all the functionality described in that reference page is an extension. See XSI Conformance . See help on Margin Code Notation.
Partager