Conversion Ansi.
Résolu/Fermé
Kenny19
Messages postés
5
Date d'inscription
mercredi 8 mai 2013
Statut
Membre
Dernière intervention
15 décembre 2013
-
31 mai 2013 à 13:05
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 mai 2013 à 19:29
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 mai 2013 à 19:29
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
Modifié par KX le 31/05/2013 à 18:58
Modifié par KX le 31/05/2013 à 18:58
Si tu veux lire ton fichier texte (ce qui n'a pas énormément d'intérêt si c'est crypté) il va falloir utiliser des caractères lisibles. Or l'ANSI comporte un certain nombre de caractères non affichables ou qui changent d'un système d'exploitation à l'autre (par exemple les accents)
Ce qu'il faudrait faire c'est utiliser uniquement des caractères communs à (presque) tous les encodages, c'est à dire les chiffres et les lettres sans accent (minuscule et/ou majuscule)
Après, ça dépend comment tu fais ton "cryptage", mais en général on est amené à faire des calculs sur des valeurs entières très grandes et donc passer par la classe BigInteger. Celle-ci dispose notamment de méthodes qui permettent d'écrire un entier en base "quelconque", au maximum en base 36 (10 chiffres et 26 lettres minuscules), ce qui permet de résoudre le problème facilement.
Ce qu'il faudrait faire c'est utiliser uniquement des caractères communs à (presque) tous les encodages, c'est à dire les chiffres et les lettres sans accent (minuscule et/ou majuscule)
Après, ça dépend comment tu fais ton "cryptage", mais en général on est amené à faire des calculs sur des valeurs entières très grandes et donc passer par la classe BigInteger. Celle-ci dispose notamment de méthodes qui permettent d'écrire un entier en base "quelconque", au maximum en base 36 (10 chiffres et 26 lettres minuscules), ce qui permet de résoudre le problème facilement.
BigInteger n = BigInteger.valueOf(1234567890); System.out.println(n); String s = n.toString(36); System.out.println(s); // kf12oi BigInteger m = new BigInteger(s,36); System.out.println(m);La confiance n'exclut pas le contrôle
31 mai 2013 à 19:24
Sinon au pire des cas j'ajoute une petite soustraction de 127 histoire de ne pas utilisé l'ascii étendue et je le retrouve dans mon programme en rajoutant ce 127 ^^
Merci de ton aide , je vais essayé de me débrouiller ^^
31 mai 2013 à 19:29
https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html