IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment encoder des caractères spéciaux en code HEXA ?


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 99
    Points : 46
    Points
    46
    Par défaut Comment encoder des caractères spéciaux en code HEXA ?
    Salut

    Je voudrais écrire une petite fonction qui transforme tous les caractères spéciaux d'une chaîne de caractère en code Hexa précédé de '%'. Par exemple, elle retournera '%20' pour l'espace " " ou "%40" pour le caractère "@".

    Dites-moi ce qui cloche dans ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    char[] EncodeIt(char text[])
    {
    	int len = strlen(text);
    	for(int i = 0; i < len;i++)
    	{
    	   switch(text[i])
    	   {
    	     case ' ':
    	     cout << "Space !"<< endl;
    	     break;
     
    	     default:
    	     cout << "No Space Found !"<< endl;
    	     break;
     
    	   }
     
    	}
     
     
     
    }
    Voici la liste des codes ASCII et HEXA des caractères concernés



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    1ère colonne : caractères spéciaux
    2e colonne : code ASCII
    3e colonne : code HEXA
     
    SP (espace) 32 20 
    ! 33 21 
    " 34 22 
    # 35 23 
    $ 36 24 
    % 37 25 
    & 38 26 
    ' 39 27 
    ( 40 28 
    ) 41 29 
    * 42 2A 
    + 43 2B 
    , 44 2C 
    - 45 2D 
    . 46 2E 
    / 47 2F 
    : 58 3A 
    ; 59 3B 
    < 60 3C 
    = 61 3D 
    > 62 3E 
    ? 63 3F 
    @ 64 40 
    [ 91 5B 
    \ 92 5C 
    ] 93 5D 
    ^ 94 5E 
    _ 95 5F 
    ` 96 60 
    { 123 7B 
    | 124 7C 
    } 125 7D 
    ~ 126 7E

    Merci pour aide !


    PDTOR

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Dites-moi ce qui cloche dans ce code
    Déjà ton code ne fait même pas de près ce que tu veux... Ensuite qui t'as déjà montré:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char[] EncodeIt(char text[])
    Puis: si tu as un type de retour, ne faudrait-il pas un return??

    Enfin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << "Space !"<< endl;
    C'est du C++, c'est donc à côté....

    Donc finalement tu as mélangé pas mal de concept, ta question est trop vague est mal posé, on ne sait pas trop pourquoi tu penses qu'il y a un problème...

    Jc

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Comment encoder des caractères spéciaux en code HEXA ?
    Citation Envoyé par pdtor
    Dites-moi ce qui cloche dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	     cout << "Space !"<< endl;
    Pas du C...

    Un truc comme ça ? Pose des questions si tu ne comprends pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include<stdio.h>
    #include<string.h>
     
    static void EncodeIt (char const *s_in, char *s_out, size_t size)
    {
       char const *p = s_in;
       int c;
       int n = 0;
     
       while ((c = *p) != 0 && n < size - 1)
       {
          if (strchr(" !\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~", c) != 0)
          {
             n += sprintf (s_out + n, "%c%2X", '%', c);
          }
          else
          {
             n += sprintf (s_out + n, "%c", c);
          }
          p++;
       }
    }
     
    int main(void)
    {
       char const s_in[] = "Hello world";
       char s_out[32];
     
       EncodeIt(s_in, s_out, sizeof s_out);
     
       printf ("'%s'\n", s_out);
       return 0;
    }

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 99
    Points : 46
    Points
    46
    Par défaut Re: Comment encoder des caractères spéciaux en code HEXA ?
    Merci !

    Cette fonction marche à merveille




    PDTOR

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Comment encoder des caractères spéciaux en code HEXA ?
    Citation Envoyé par pdtor
    Cette fonction marche à merveille
    Euh, elle n'est pas exempte de problèmes... Il y a un risque de débordement. Mais on peut anticiper le coup en refléchissant 5 minutes, et si on a compris comment elle fonctionne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment insérer des caractères spéciaux dans sa base de donnees
    Par YouKe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2015, 20h31
  2. Comment remplacer des caractères spéciaux
    Par fiatlux dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 07/12/2012, 00h03
  3. Comment afficher des caractères spéciaux tel que € ?
    Par jerem_orga dans le forum Android
    Réponses: 4
    Dernier message: 26/12/2011, 09h38
  4. Réponses: 3
    Dernier message: 18/02/2008, 14h05
  5. Réponses: 9
    Dernier message: 26/03/2007, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo