Transtypage en C (Pas urgent)

Fermé
grishester - 4 juin 2003 à 12:11
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 5 juin 2003 à 10:18
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

2 réponses

0x00 = 0 en decimal, donc '0', pas '\0'.
je ne vois pas le probleme.

--
pouet
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
5 juin 2003 à 10:18
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 :
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 ?
0