Transtypage en C (Pas urgent)
grishester
-
batmat Messages postés 1871 Date d'inscription Statut Membre Dernière intervention -
batmat Messages postés 1871 Date d'inscription Statut Membre Dernière intervention -
Hola tout le monde!! ¿Qué tal?
Bon, j'espère que vous passez une bonne semaine ... parce que moi pas du tout. Il se trouve que j'ai une chaîne :
const char * "301200F4"
par exemple, qui represente le code d'une image.
De cette chaîne je dois faire une chaîne qui prend 2 par 2 les chiffres et les transcrire sur 1 byte, afin de le mettre dans une chaîne (un tableau de caractères). En gros je dois convertir cette chaine de l'hexa au format decimal.
Le probleme c'est que le "00" hexa correspond au caractere nul, soit '\0', et donc il arrete la chaine.
Ainsi avec l'exemple ci-dessus, ma chaine une fois decodée ne tiendra pas compte du "F4" final puisqu'avant j'ai eu un "00" qui arrete la chaine.
Quelqu'un peut-il m'aider pour transcrire cette chaine hexadecimale s'il vous plé?
Merci vocou
Julien
Bon, j'espère que vous passez une bonne semaine ... parce que moi pas du tout. Il se trouve que j'ai une chaîne :
const char * "301200F4"
par exemple, qui represente le code d'une image.
De cette chaîne je dois faire une chaîne qui prend 2 par 2 les chiffres et les transcrire sur 1 byte, afin de le mettre dans une chaîne (un tableau de caractères). En gros je dois convertir cette chaine de l'hexa au format decimal.
Le probleme c'est que le "00" hexa correspond au caractere nul, soit '\0', et donc il arrete la chaine.
Ainsi avec l'exemple ci-dessus, ma chaine une fois decodée ne tiendra pas compte du "F4" final puisqu'avant j'ai eu un "00" qui arrete la chaine.
Quelqu'un peut-il m'aider pour transcrire cette chaine hexadecimale s'il vous plé?
Merci vocou
Julien
2 réponses
Où stocke-tu ta chaine résultat ???
Si tu stocke dans une chaine de caractère, tu ne dois pas écrire le chiffre 0 mais le caractère 0 ('0' et non 0 koi) :
ex :
si tu écris
Lorsque tu vas faire :
Dans le premier cas, tu n'afficheras rien car une chaine se termine en C par '\0' (le chiffre 0 pratiquement toujours dirons-nous).
dans le deuxième, tu afficheras 0 puis pleins de caractères jusqu'à ce qu'il trouve un '\0' ou qu'il plante ;p (puisque tu n'as pas positionné de '\0' pour finir ta chaine)
Voilà... J'espère que ça éclaircit tes idées...
@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
Si tu stocke dans une chaine de caractère, tu ne dois pas écrire le chiffre 0 mais le caractère 0 ('0' et non 0 koi) :
ex :
char cible[10];
si tu écris
cible[0]=0;
//au lieu de
cible[0]='0';
Lorsque tu vas faire :
printf("%s", cible);
Dans le premier cas, tu n'afficheras rien car une chaine se termine en C par '\0' (le chiffre 0 pratiquement toujours dirons-nous).
dans le deuxième, tu afficheras 0 puis pleins de caractères jusqu'à ce qu'il trouve un '\0' ou qu'il plante ;p (puisque tu n'as pas positionné de '\0' pour finir ta chaine)
Voilà... J'espère que ça éclaircit tes idées...
@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?