chaine, hexa, conversion...

chaine, hexa, conversion... - C++ - Programmation

Marsh Posté le 04-09-2002 à 11:28:21    

Hello !
 
Bon, un truc tout con mais chiant...
 
j'ai un buffer char buf[10]
dedans je met 0x25 (buff "=" "0x25" )
je veux mettre le contenu de buf dans un unsigned char, comment je fais ??
sachant que ucTruc[0] = buf il aime pas beaucoup ! :crazy:
 
merci !! :)

Reply

Marsh Posté le 04-09-2002 à 11:28:21   

Reply

Marsh Posté le 04-09-2002 à 11:35:27    

a écrit a écrit :

 




 
déjà essayé, ça marche pas... :
 
warning C4047: '=' : 'unsigned char ' differs in levels of indirection from 'char *' à la compile et je me retrouve avec "," dans ucTruc[0] :(

Reply

Marsh Posté le 04-09-2002 à 11:37:06    

Pour répondre à côté : le 0x25, il est généré par quoi ? Y aurait pas moyen (:D) de stocker directement la valeur int (ce qui simplifierait grandement la vie) quitte à afficher une valeur hexa si besoin pour autre chose mais à stocker numérique et pas chaîne ?
 
Je suis pas sûr que atol() atoi() savent décoder le "0x25", faudrait tester (??).

Reply

Marsh Posté le 04-09-2002 à 11:37:09    

Je ne comprend pas trop bien ton : (buff "=" "0x25" ) ...
Sinon je peux te dire que buf est un pointeur donc tu peux faire : ucTruc[0] = *buf;

Reply

Marsh Posté le 04-09-2002 à 11:37:19    

heeee c'est pas cool !!!! il est passé où le message d'avant ???? :gun:

Reply

Marsh Posté le 04-09-2002 à 11:39:12    

Code :
  1. sscanf(buff,"%x",ucTruc);


 
Fait gaffe à ce que ton nombre ne dépasse pas 255 par contre.


---------------
Le Tyran
Reply

Marsh Posté le 04-09-2002 à 11:39:52    

jan a écrit a écrit :

heeee c'est pas cool !!!! il est passé où le message d'avant ???? :gun:




 
quel message  :sarcastic:


---------------
Le Tyran
Reply

Marsh Posté le 04-09-2002 à 11:43:13    

bon alors j'explique calmement...
 
je récupère une valeur en hexa (j'ai pas le choix) dans buf déclaré comme char buf[10] (pour bien vous embrouiller je le récupère sous forme de chaine !! :) )
 
ça ça marche, j'ai bien buf = "0x25"
 
ensuite je veux mettre ce que j'ai récupéré dans buf dans un unsigned char ucTruc[0]
 
au final je veux ucTruc[0] = 0x25
 
voili voilou !  
 
merci pour vos réponses déjà ! :)

Reply

Marsh Posté le 04-09-2002 à 11:43:47    

letoII a écrit a écrit :

 
 
quel message  :sarcastic:  




 
celui que t'avais écrit en premier ! :(

Reply

Marsh Posté le 04-09-2002 à 11:49:50    

jan a écrit a écrit :

bon alors j'explique calmement...
 
je récupère une valeur en hexa (j'ai pas le choix) dans buf déclaré comme char buf[10] (pour bien vous embrouiller je le récupère sous forme de chaine !! :) )
 
ça ça marche, j'ai bien buf = "0x25"
 
ensuite je veux mettre ce que j'ai récupéré dans buf dans un unsigned char ucTruc[0]
 
au final je veux ucTruc[0] = 0x25
 
voili voilou !  
 
merci pour vos réponses déjà ! :)




 
je t'ai filé la soluce


---------------
Le Tyran
Reply

Marsh Posté le 04-09-2002 à 11:49:50   

Reply

Marsh Posté le 04-09-2002 à 11:54:47    

ben ça lui plait pas, il me fait un bel access violation...

Reply

Marsh Posté le 04-09-2002 à 12:16:58    

vous êtes partis manger ou vous séchez comme moi ?? ;)

Reply

Marsh Posté le 04-09-2002 à 12:17:39    

jan a écrit a écrit :

vous êtes partis manger ou vous séchez comme moi ?? ;)




 
leto2 t'a filé la bonne réponse, y a rien à dire de plus

Reply

Marsh Posté le 04-09-2002 à 12:19:18    

Smaragdus a écrit a écrit :

 
 
leto2 t'a filé la bonne réponse, y a rien à dire de plus




 
ben si, ça me fait un "access violation" donc c'est pas tout à fait la bonne solution malheureusement :(

Reply

Marsh Posté le 04-09-2002 à 12:23:43    

ben tant pis, je vais m'y prendre autrement...
 
merci pour tout qd même !! :) :)

Reply

Marsh Posté le 04-09-2002 à 12:47:53    

Je viens de vérifier que atoi() ne donne rien,
mais
{
char tt[32], tst[10];
int aa;
strcpy(tst, "0x25" );
sscanf(tst, "%x", &aa);
sprintf(tt, "%d", aa);
MessageBox(hWnd, tt, "valeur de 0x25", MB_OK);
}
comme suggéré par letoii fonctionne très bien : on obtient 37 décimal, ce qui est bien l'équivalent de 25Hexa.
 
Il doit y avoir un pb avec la chaîne, pb pointeur, .. ???
 
Dans aa, on a 37 décimal, 25 hexa, 101001 en binaire.

Reply

Marsh Posté le 04-09-2002 à 13:05:46    

jan a écrit a écrit :

 
 
ben si, ça me fait un "access violation" donc c'est pas tout à fait la bonne solution malheureusement :(




 
 
Ouai effectivement j'ai fait une petite bouze mais bon t'aurais pu corriger ;)
 

Code :
  1. int temp;
  2. sscanf(buff,"%x",&temp);
  3. ucTruc[0] = (unsigned char)temp;


Message édité par LetoII le 04-09-2002 à 14:16:17

---------------
Le Tyran
Reply

Marsh Posté le 04-09-2002 à 14:14:55    

je ne dirais qu'un mot : MERCI ! :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed