Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction pour convertir les lettre en numero

    17 septembre 2007 à 18:31:01

    Bonjour

    Voici mon probleme:

    J'ai un fichier rempli de code de binaire et je veut traduire ce code en code ASCII mais quand j'extrait les nombre de mon fichier je ne peut pas faire calcul dessus car ils se comportent tous comme des lettres.

    Alors je voudrai savoir s'il existe une fonction qui permet de convertir les lettre en nombre.

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      17 septembre 2007 à 18:47:36

      1. int a = 65;
      2. // ou
      3. char a = 'A';
      4. // ou
      5. char a = 65;
      6. // ou encore
      7. int a = 'A';

      sont identiques, et puis : une lettre est un nombre.
      • Partager sur Facebook
      • Partager sur Twitter
        17 septembre 2007 à 18:54:35

        Mais je m'en fou des lettre j'ai que des nombres dans mon fichier et je veut les extraire et faire des calcul avec mais ils se comportent comme des lettre et sa m'affiche des truc bizare essayer vous verz.

        Alors il me faut une fonction qui convertit les lettre en numero je sai que sa existe.

        Bon pour la petite histoire je doit y aller je serai la seuleument demain et sa serait vraiment mais alors vraiment si qu'elqu'un pouvait juste me donner la fonction sa serait cool



        merci d'avance
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          17 septembre 2007 à 19:24:01

          "[...]sa serait vraiment mais alors vraiment si qu'elqu'un pouvait[...]"

          Moi aussi il m'arrive de ne pas finir mes. :p

          Et si tu fais :
          1. char a = 'A';
          2. int b = (int)a;
          3. cout << b;

          ça donne quoi? (Moi je ne sais pas.)


          EDIT : j'ai testé et ça mets bien 65.

          Mais je sais pas si j'ai répondu...
          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2007 à 19:40:46

            Est-ce que tu peux nous montrer ton code pour lire et ecrire tes fichiers qu'on puisse voir ton problème et t'aider efficacement?
            • Partager sur Facebook
            • Partager sur Twitter
              18 septembre 2007 à 9:30:05

              mais vous avez rien compri ! je m'en fou des lettre !! mon fichier ne contient que des nombre et uniquement des nombre. que des 0 et des 1 parce que c'est ecrit en binaire.

              MOi je veut extraire ces nombre et faire des calcul avec selon un algorithme et sa va a la fin me donner le code ACSII du binaire.

              Seuleument le probleme c'est que avec ces nombres j'arrive pas a faire de calcul avec ! sa m'affiche des truc bizare au lieu des calcul demander.

              Alors je voudrai une fonction qui puissent remedier a sa donner moi juste la fonction et n'essayer pas de comprendre la probleme


              Merci d'avance
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                18 septembre 2007 à 10:51:36

                On peut voir ton code pour voir comment tu fais la lecture, et montre aussi un apercu du fichier
                • Partager sur Facebook
                • Partager sur Twitter
                  18 septembre 2007 à 11:46:34

                  Voici mon code source:

                  1. #include <iostream>
                  2. #include <string>
                  3. #include <fstream>
                  4. using namespace std;
                  5. long index();
                  6. long selection (long);
                  7. long crypteur ();
                  8. long decrypteur ();
                  9. long transcryption (long tableau[], long taille);
                  10. int main()
                  11. {
                  12.     index();
                  13.         return 0;
                  14. }
                  15. long index ()
                  16. {
                  17.     long choix = 0;
                  18.     cout << "\n\n\tCrypteur / Decrypteur" << endl << endl;
                  19.     cout << "\t1. Crypteur\n\t2. Decrypteur\n\t3. Exit\n\n\tVotre choix ? ";
                  20.     cin >> choix;
                  21.     selection(choix);
                  22. }
                  23. long selection (long choix)
                  24. {
                  25.     switch(choix)
                  26.     {
                  27.         case 1:
                  28.             crypteur();
                  29.         break;
                  30.         case 2:
                  31.             decrypteur();
                  32.         break;
                  33.         case 3:
                  34.             exit(EXIT_SUCCESS);
                  35.         break;
                  36.         default:
                  37.             index();
                  38.         break;
                  39.     }
                  40. }
                  41. long crypteur ()
                  42. {
                  43. }
                  44. long decrypteur ()
                  45. {
                  46.     string nomFichier = "";
                  47.     FILE *fichier = NULL;
                  48.     cout << "\n\tQuel est le nom du fichier a decrypter ? ";
                  49.     cin >> nomFichier;
                  50.     fichier = fopen(nomFichier.c_str(), "r");
                  51.     if (fichier != NULL)
                  52.     {
                  53.         long tableau[8] = {0};
                  54.         long nombreActuel;
                  55.         bool continuer = true;
                  56.         while(continuer)
                  57.         {
                  58.             for (long i = 0; i < 8; i++)
                  59.             {
                  60.                 nombreActuel = fgetc(fichier);
                  61.                 if (nombreActuel == EOF)
                  62.                 {
                  63.                     continuer = false;
                  64.                 }
                  65.                 else
                  66.                 {
                  67.                     tableau[i] = nombreActuel;
                  68.                 }
                  69.             }
                  70.             nombreActuel = fgetc(fichier);
                  71.             if (nombreActuel == EOF)
                  72.             {
                  73.                 continuer = false;
                  74.             }
                  75.             else
                  76.             {
                  77.                 fseek(fichier, -1, SEEK_CUR);
                  78.             }
                  79.         }
                  80.         transcryption(tableau, 8);
                  81.         fclose(fichier);
                  82.     }
                  83.     else
                  84.     {
                  85.         cout << "\n\tVotre fichier n'existe pas.";
                  86.         index();
                  87.     }
                  88. }
                  89. long transcryption (long tableau[], long taille)
                  90. {
                  91.     long code[8] = {0};
                  92.     long nombre = 1;
                  93.     for (long i = 0; i < taille; i++)
                  94.     {
                  95.         code[i] = tableau[i] * nombre;
                  96.         nombre *= 2;
                  97.     }
                  98. }


                  et mon ficheir contient 8 numero : 10010010.

                  Voila vous avez le probleme et essayer d'afficher ce que contient le tableau code et vous verez.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    18 septembre 2007 à 12:37:37

                    alors, déjà, chez moi, ce code ne compile pas !
                    Ensuite, ta lecture dans ton fichier, tu l'as fait en C, pas en C++ !!

                    Corrige déjà ça.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 septembre 2007 à 15:11:53

                      Vas voir la faq sur developpez.com pour ce qui est de la conversion de types.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 septembre 2007 à 17:42:26

                        J'ai rectifier et j'ai converti de char en long pour avoir des nombre mais la c'est le cauchemar le programme plante carrement. s'il vous plait essayer de trouver la faille.

                        1. #include <iostream>
                        2. #include <string>
                        3. #include <fstream>
                        4. using namespace std;
                        5. long index();
                        6. long selection (long);
                        7. long crypteur ();
                        8. long decrypteur ();
                        9. long transcryption (long tableau[], long taille);
                        10. int main()
                        11. {
                        12.     index();
                        13.         return 0;
                        14. }
                        15. long index ()
                        16. {
                        17.     long choix = 0;
                        18.     cout << "\n\n\tCrypteur / Decrypteur" << endl << endl;
                        19.     cout << "\t1. Crypteur\n\t2. Decrypteur\n\t3. Exit\n\n\tVotre choix ? ";
                        20.     cin >> choix;
                        21.     selection(choix);
                        22. }
                        23. long selection (long choix)
                        24. {
                        25.     switch(choix)
                        26.     {
                        27.         case 1:
                        28.             crypteur();
                        29.         break;
                        30.         case 2:
                        31.             decrypteur();
                        32.         break;
                        33.         case 3:
                        34.             exit(EXIT_SUCCESS);
                        35.         break;
                        36.         default:
                        37.             index();
                        38.         break;
                        39.     }
                        40. }
                        41. long crypteur ()
                        42. {
                        43. }
                        44. long decrypteur ()
                        45. {
                        46.     string nomFichier = "";
                        47.     ifstream fichier;
                        48.     cout << "\n\tQuel est le nom du fichier a decrypter ? ";
                        49.     cin >> nomFichier;
                        50.     fichier.open(nomFichier.c_str(), ios::in);
                        51.     if (fichier)
                        52.     {
                        53.         long tableau[8] = {0};
                        54.         char nombreActuel;
                        55.         bool continuer = true;
                        56.         while(continuer)
                        57.         {
                        58.             for (long i = 0; i < 8; i++)
                        59.             {
                        60.                 fichier.get(nombreActuel);
                        61.                 if (nombreActuel == EOF)
                        62.                 {
                        63.                     continuer = false;
                        64.                 }
                        65.                 else
                        66.                 {
                        67.                     tableau[i] = (long) nombreActuel;
                        68.                 }
                        69.             }
                        70.             fichier.get(nombreActuel);
                        71.             if (nombreActuel == EOF)
                        72.             {
                        73.                 continuer = false;
                        74.             }
                        75.             else
                        76.             {
                        77.                 fichier.seekg(-1, ios::cur);
                        78.             }
                        79.         }
                        80.         transcryption(tableau, 8);
                        81.         fichier.close();
                        82.     }
                        83.     else
                        84.     {
                        85.         cout << "\n\tVotre fichier n'existe pas.";
                        86.         index();
                        87.     }
                        88. }
                        89. long transcryption (long tableau[], long taille)
                        90. {
                        91.     long code[8] = {0};
                        92.     long nombre = 1;
                        93.     for (long i = 0; i < taille; i++)
                        94.     {
                        95.         code[i] = tableau[i] * nombre;
                        96.         nombre *= 2;
                        97.     }
                        98.     for (long i = 0; i < taille; i++)
                        99.     {
                        100.         cout << tableau[i];
                        101.     }
                        102. }


                        merci d'avance
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 septembre 2007 à 18:12:34

                          nan c'est bon j'ai reparer mais maintenant j'aimerai que vous tester vous meme ce code source et comprennez le truc qui va pas, voyez plutot:

                          1. #include <iostream>
                          2. #include <string>
                          3. #include <fstream>
                          4. using namespace std;
                          5. long index();
                          6. long selection (long);
                          7. long crypteur ();
                          8. long decrypteur ();
                          9. long transcryption (long tableau[], long taille);
                          10. int main()
                          11. {
                          12.     index();
                          13.         return 0;
                          14. }
                          15. long index ()
                          16. {
                          17.     long choix = 0;
                          18.     cout << "\n\n\tCrypteur / Decrypteur" << endl << endl;
                          19.     cout << "\t1. Crypteur\n\t2. Decrypteur\n\t3. Exit\n\n\tVotre choix ? ";
                          20.     cin >> choix;
                          21.     selection(choix);
                          22. }
                          23. long selection (long choix)
                          24. {
                          25.     switch(choix)
                          26.     {
                          27.         case 1:
                          28.             crypteur();
                          29.         break;
                          30.         case 2:
                          31.             decrypteur();
                          32.         break;
                          33.         case 3:
                          34.             exit(EXIT_SUCCESS);
                          35.         break;
                          36.         default:
                          37.             index();
                          38.         break;
                          39.     }
                          40. }
                          41. long crypteur ()
                          42. {
                          43. }
                          44. long decrypteur ()
                          45. {
                          46.     string nomFichier = "";
                          47.     ifstream fichier;
                          48.     cout << "\n\tQuel est le nom du fichier a decrypter ? ";
                          49.     cin >> nomFichier;
                          50.     fichier.open(nomFichier.c_str(), ios::in);
                          51.     if (fichier)
                          52.     {
                          53.         long tableau[8] = {0};
                          54.         char nombreActuel;
                          55.         bool continuer = true;
                          56.         long nombre = 0;
                          57.         while(continuer)
                          58.         {
                          59.             fichier >> nombre;
                          60.             cout << nombre;
                          61.             for (long i = 0; i < 8; i++)
                          62.             {
                          63.                 fichier.get(nombreActuel);
                          64.                 if (nombreActuel == EOF)
                          65.                 {
                          66.                     continuer = false;
                          67.                 }
                          68.                 else
                          69.                 {
                          70.                     tableau[i] = (long) nombreActuel;
                          71.                 }
                          72.             }
                          73.             if (!(fichier.get(nombreActuel)))
                          74.             {
                          75.                 continuer = false;
                          76.             }
                          77.             else
                          78.             {
                          79.                 fichier.seekg(-1, ios::cur);
                          80.             }
                          81.         }
                          82.         transcryption(tableau, 8);
                          83.         fichier.close();
                          84.     }
                          85.     else
                          86.     {
                          87.         cout << "\n\tVotre fichier n'existe pas.";
                          88.         index();
                          89.     }
                          90. }
                          91. long transcryption (long tableau[], long taille)
                          92. {
                          93.     long code[8] = {0};
                          94.     long nombre = 1;
                          95.     for (long i = 0; i < taille; i++)
                          96.     {
                          97.         cout << endl << tableau[i];
                          98.     }
                          99.     for (long i = 0; i < taille; i++)
                          100.     {
                          101.         code[i] = tableau[i] * nombre;
                          102.         nombre *= 2;
                          103.     }
                          104. }


                          je fai une boucle for de verification de ce qui ce trouve dans le tableau et normalement les nombre doit etre identique au nombres du fichier mais c'est pas le cas...
                          Essayer de me dire pourquoi
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 septembre 2007 à 19:26:25

                            parce que get lit la taille de sizeof( std::istream::char_type ) soit 1 octet... toi tu veux lire sizeof( long ) alors n'utlise pas get!

                            http://cppreference.com/cppio/index.html
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 septembre 2007 à 22:56:02

                              J'ai vraiment le plus grand mal à comprendre où tu veux en venir. Tu n'aurais pas quelque part (un site www quoi) un bout de ton fichier, ainsi que comment tu veux l'interpréter ?

                              Car je n'ai vraiment pas l'impression que nous appelions "binaire", "nombre", "caractère", etc les mêmes choses. Ce qui n'aide pas à se comprendre.

                              PS: tes lectures de fichiers sont particulièrement complexes.
                              P.ex.: une lecture canonique de 8 octets, c'est ainsi:
                              1. unsigned char buffer[8];
                              2. while (flux.read(buffer, sizeof(buffer)) {
                              3.    fairequelquechoseavec(buffer, sizeof(buffer));
                              4. }

                              Si maintenant, ton fichier contient huit '1' et '0' (soit des 48 et 49 si on regarde les octets véritablement stockés ; quel étrange format) et que tu veux interpréter ça comme un nombre, deux possibilités:
                              a- soit tes séries de huits caractères '0'/'1' sont séparés par des espaces/sauts de lignes:
                              ->
                              1. unsigned int octet;
                              2. while (flux >> octet) { faireqqchavec(octet); }


                              b- soit tes séries de 8 chiffres ne sont séparées par rien du tout
                              1. std::string ch(8);
                              2. while (flux.read(&ch[0], ch.size()) {
                              3.     std::bitset<8> octet(ch);
                              4.     faireqqchavec(octet);
                              5. }
                              • Partager sur Facebook
                              • Partager sur Twitter
                              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                19 septembre 2007 à 11:47:22

                                imghs, pour un simple programeur comme moi qui na lu que les cours du site du zero ton code est assez complexe.

                                Pourrai tu l'incorporer dans mon code source directement s'il te plait pour que je puisse mieux le comprendre.

                                Merci
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  19 septembre 2007 à 13:50:05

                                  Sérieusement tu apprendrais bien mieux en le faisant toi-même. Il n'y aura pas toujours un 'lmghs' derrière toi pour tout expliquer en faisant ton travaille. Ce qu'il te présente est franchement simple (enfin, il n'y a pas grand chose à comprendre), et si tu ne comprends pas un mot, ou un bout de code, il y a toujours Google et ses potes, et tu peux toujours demander si tu ne trouve rien un éclaircissement sur un point précis.

                                  PS : pour la lecture/écriture de fichier il y a un petit tuto (non officiel) sur ce site. Tu peux aussi voir http://www.cplusplus.com/reference/ ou http://www.cppreference.com/cppio/index.html ou encore http://www.gotapi.com/ccpp .
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 septembre 2007 à 1:20:51

                                    Oui. (i.e. +1 à ce qu'à dit hiura)

                                    De plus, je serai bien infichu de l'adapter à ton code vu que je n'ai pas compris ce que contenait exactement ton fichier. D'où ma question d'en voir un morceau.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                                    fonction pour convertir les lettre en numero

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown