fonctions ord et asc

Bugs

Modérateur : xcasadmin

fred
Messages : 46
Inscription : mer. sept. 09, 2009 7:29 pm

fonctions ord et asc

Message par fred » mer. mai 15, 2013 11:54 am

Bonjour
pourquoi ord(ô) renvoie-t-elle -61 (xcas1.0.0) et asc("ô") renvoie [195, 180] ?
j'aurais préféré ord("ô")=asc("ô")=244
en effet char(244) donne bien "ô"
J'ai les mêmes questions pour les autres lettres accentuées et les e dans l'o et a dans l'o...

Merci

parisse
Messages : 5084
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: fonctions ord et asc

Message par parisse » mer. mai 15, 2013 12:49 pm

Ca depend du codage que vous utilisez. Xcas utilise UTF8, donc les caracteres non ascii sont sur 2 ou 3 octets.

fred
Messages : 46
Inscription : mer. sept. 09, 2009 7:29 pm

Re: fonctions ord et asc

Message par fred » mer. mai 15, 2013 5:52 pm

merci pour la réponse rapide.
Donc question bête : je suis sous windows vista (ou xp voire seven au lycée) et je veux travailler des fonctions de codage. Pour cela j'ai besoin des fonctions ord et asc pour préparer mon texte : enlever la ponctuation, remplacer les lettres accentuées et mettre le texte en majuscule. Une fois cela fait, quelque soit l'encodage des caractères cela ne me pose pas de problème pour des chiffrements de césar affine ou vigenère (je l'ai testé).
La question : peut-on changer UTF8 en autre chose ?

parisse
Messages : 5084
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: fonctions ord et asc

Message par parisse » mer. mai 15, 2013 6:16 pm

Non, on ne peut pas changer UTF8 pour autre chose dans l'interface de Xcas, mais vous pouvez coder avec n'importe quel système de codage sur 8 bits, sauf que l'affichage dans Xcas ne sera pas compréhensible. Mon conseil serait de supprimer les accents et mettre en majuscules pour Jules César (et avec retrait du code de A) et pour commencer avec un chiffrement affine, puis ensuite de rester en UTF8 en travaillant modulo 256 (ou plus, on peut aussi regrouper par paquets de caractères ce qui permet de parler d'écriture en base 256), en utilisant asc et char pour convertir toute la chaine en liste d'entiers entre 0 et 255 et réciproquement et travailler ensuite sur les entiers de la liste en chiffrage et déchiffrage (sans faire asc/char sur la liste cryptée, le message codé est une liste d'entiers).

Répondre