Bonjour. Est ce que quelqu'un pourrait m'expliquer comment convertir un cstring en hexa?Parce que j ai beau regarder dans la faq, je comprend pas très bien. Merci d avance
Bonjour. Est ce que quelqu'un pourrait m'expliquer comment convertir un cstring en hexa?Parce que j ai beau regarder dans la faq, je comprend pas très bien. Merci d avance
La fonction strtoul() te permet de convertir une chaine de la forme const char* en un entier non signé (valeur de retour).
Le premier paramètre est ta CString, le second tu le mets à NULL et le 3ième est la base correspondante. Pour toi, ca semblerait 16.
Oui mais est ce que strtoul va aussi me convertir les lettres?
Oui si tu précises bien la base hexa comme paramètre. C'est l'intérêt de ce dernier.Envoyé par rodgeurette
Pourquoi ne fais tu pas d'essais pour le constater?
Justement j ai fait:
unsigned long int x;
x=strtoul(nom__variable,NULL,16);
et ensuite j ai voulu l insérer dans un fichier texte en faisant
fprintf(fichier,%ld,,x);
mais quand j ai pris "michel" comme choix de variable ca ma donné 0...
michel ne se converit pas en un entier... 'm', 'i', 'h', 'l' ne représente pas les lettres hexadécimales...mais quand j ai pris "michel" comme choix de variable ca ma donné 0...
En fait ce que tu veux c'est la représentation hexadécimale des caractères de ta chaîne, c'est différent!
Essaie par exemple:
Tu auras la représentation hexadécimale du caractère 'm'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("%x", 'm');
Oui effectivement ca marche bien pour une lettre, mais si je met
fprintf(fichier,%x,nom__variable);
ca ne marche plus...
Je ne pense pas qu'il y ai une fonction d'une API qui effectue cela directement. Jamais entendu parler et jamais vu.
Ce que je ferais:
- Récupérer un pointeur sur la chaîne de caractère
- Parcourir chaque caractère de ta chaine en incrémenant ton pointeur et au préalable sauvegarder dans ton fichier, la représentation hexadécimale du caractère sur lequel tu pointes.
![]()
Partager