Convertion String-ASCII

Signaler
Messages postés
289
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
28 février 2009
-
Messages postés
65
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Bonsoir, je n'arrive pas ( malgrès de nombreux exemples trouvés sur le
net ) à comprendre comment convertir un cactère en valeur ASCII...



Comment faire ( Avec des explication svp, j'ai commencé le C# hier .. :p ) svp ?

-=Ar$£nik=-

5 réponses

Messages postés
65
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
1 août 2005
4
La valeur ascii d'un caractère est la valeur de l'octet représentant le caractère...

Bref, si tu castes un caractère en int... tu obtiens la valeur ascii !!



Par exemple, si tu as une variable "char toto;", pour obtenir la valeur ascii du caractère qu'elle contient, il te suffit de faire :

"(int) toto" (ou "toto as int")
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, sois plus précis, que veux tu faire, lire dans un fichier, envoyer des bytes de données ? le jeu de code ASCII ne contient que 127 caractères et l'unicode peut contenir toutes les langues du monde, tu ne peux pas convertir l'unicode en ASCII sans subir de perte ! les accents francais par exemple ne sont pas disponible en ASCII et bien que l'ASCII soit un sous enssemble de l'unicode je ne pense pas que caster un caractère unicode en int soit une bonne solution, même si on retrouve les même valeurs que la table ASCII et que ca semble fonctionner, je pense qu'au niveau binaire ca ne marche pas comme ca, ( mais je ne suis pas un spécialiste ). Le mieux c'est d'utiliser la classe ASCIIEncoding.

ASCIIEncoding encode = new ASCIIEncoding( );

// Pour récuperer un tableau de bytes.
byte[ ] ascii = encode.GetBytes( str );

// Pour transforme le tableau en chaine.
return encode.GetString( ascii );
Messages postés
65
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
1 août 2005
4
En fait globallement dans tous les encodages de caractères, les
caractères de bases compris entre 0 et 127 sont les mêmes et
correspondent aux caractères ASCII...

(par contre suivant l'encodage, la représentation physique d'un
caractère peut se faire sur plusieurs octets, mais cela ne se voit pas
quand on fait un cast).



Du coup si on veut les codes ascii d'un caractère, le cast fonctionne
tout le temps (et on peut vérifier que le résultat est bien un
caractère ascii en vérifiant qu'il est compris entre 0 et 127).



Voila.. C'était pour défendre un peu ma proposition... lol...



Bon, maintenant faut que je sois honnète : pour traiter un caractère,
la solution que j'ai donné peut passer... Mais clairement utiliser des
classes du style "ASCIIEncoding" est plus rigoureux et plus propre dès
qu'on veut gérer des chaines de caractères ou divers encodages !
Messages postés
289
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
28 février 2009
2
EUh en fait, je voulais seulement la valeur ASCII d'un caractère américain, soit l'équivalent de ASC() en VB...

Je travail sous SharpDevelop et cette methode :

"(int) toto" (ou "toto as int")

ne fonctionne pas...

-=Ar$£nik=-
Messages postés
65
Date d'inscription
samedi 24 avril 2004
Statut
Membre
Dernière intervention
1 août 2005
4
Euh.. Tu as un message d'erreur ?

Normalement un bête cast doit passer..

Enfin sinon le mieux est sans doute que tu te diriges vers la solution proposée par Lutinore..