Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 19 juil. 2005 à 03:09
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 );
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 19 juil. 2005 à 10:20
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 !