Partage
  • Partager sur Facebook
  • Partager sur Twitter

convertir une chaine de caratère en son code ASCII

C

    1 décembre 2019 à 21:14:57

    Bonjour à tous,

    je cherche à convertir une chaîne de caractère en son code ASCII.

    Je sais qu'en python il existe la fonction ord(chaîne de caractère) mais en C, après de longue heure de recherche je ne trouve pas d'équivalent.

    Pouvez vous m'aider ?

    Bien cordialement,

    William

    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2019 à 22:08:43

      Tu veux dire que tu veux convertir un caractère en son code ASCII ? (Le code s'applique à un caractère, pas à toute la chaîne). Eh bien figure-toi que, en C, un caractère est égal à son code ASCII. C'est seulement à l'affichage qu'on peut demander soit d'afficher le graphe du caractère (format %c), soit d'afficher son code ASCII (format %d).

      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2019 à 21:30:06

        Merci pour votre aide.

        ascii = ord(mot[i])

        Je souhaite en faite appliquer cette fonction de python en C.

        Je sais bien entendu qu'il n'y a pas d'équivalence mais je cherche un moyen de faire la même chose en C.

        Validez-vous la manière dont je récupère le msg pour l'afficher en son code ASCII ?

        Je souhaite prendre le code ASCII du message et y appliquer un algorithme de chiffrement.

        char msg[] = "";

            int taille_msg = 0;

            int i = 0;

            printf("\nEntrer le mot ou la phrase a crypter : ");

            scanf("%s", &msg);

            taille_msg = strlen(msg);

            //*printf("\n%d", taille_msg);

            printf("%d", msg);

        Merci de votre retour.

        -
        Edité par William3477 2 décembre 2019 à 21:37:20

        • Partager sur Facebook
        • Partager sur Twitter
          2 décembre 2019 à 23:10:15

          Bonjour, heu.. non et non.. :)

          char msg[] = ""; fait que ton message fera 0 caractere et ne pourra pas être changé

              scanf("%s", &msg);  msg est un tableau, donc un pointeur donc c'est scanf("%s",msg)

              printf("%d", msg); cela affichera l'adresse vers laquelle pointe msg et non le code ascii du message pointé

          Je te propose plutot ceci:

              char msg[255];
              int taille_msg;
              int i;
          
              printf("\nEntrer le mot ou la phrase a crypter : ");
              // attention, il ne faudra pas d'espace dans la saisie
              scanf("%s", msg);
              taille_msg = strlen(msg);
              for (i = 0; i < taille_msg; i++) {
                  printf("%c equivalent en decimale : %d equivalent en hexa : %x\n", msg[i], msg[i], msg[i]);
              }



          • Partager sur Facebook
          • Partager sur Twitter
            2 décembre 2019 à 23:14:50

            William3477 a écrit:

            ascii = ord(mot[i])

            Je souhaite en faite appliquer cette fonction de python en C.

            Pas besoin de fonction en C, car une lettre est représentée en mémoire son code ASCII, ce n'est qu'un problème d'affichage.

            La preuve:

            #include <stdio.h>
            
            int main()
            {
            	char lettre = 'a';
            	printf("%d\n", lettre);
            	// ou bien:
            	int ascii = (int)lettre;
            	printf("%d\n", ascii);
            }




            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2019 à 23:32:08

              Si on creuse un peu, un octet n'est pas un caractère. 

              Quand ils le sont, c'est rarement de l'ascii (qui est un code 7 bits dont les lettres accentuées sont absentes, mais un plutot codage genre iso latin  (iso 8859-1) pour les langues d'Europe de l'Ouest. L'ascii, c'était dans les années 70.

              De nos jours on utilise beaucoup utf8,  codage dans lequel les caractères sont représentés par un nombre variable d'octets.  Voir multy-byte strings et w_char en C.

              -
              Edité par michelbillaud 2 décembre 2019 à 23:33:45

              • Partager sur Facebook
              • Partager sur Twitter

              convertir une chaine de caratère en son code ASCII

              × 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