Bonjour,
Comment faire pour saisir à partir du clavier des caractères en representation Hexadecimale? exemple: entrer au clavier l'adresse 0x3FFF0503.
Version imprimable
Bonjour,
Comment faire pour saisir à partir du clavier des caractères en representation Hexadecimale? exemple: entrer au clavier l'adresse 0x3FFF0503.
salut,
je dirai en faisant un edit specialisé et en filtrant les caracteres en dehors de la plage 0.9 et A.F
exemple faq de filtrage : http://c.developpez.com/faq/vc/?page...EditFilterChar
:D
ça voudrait dire que je dois tester un à un chaque caractère entré, et en déduire les bytes en hex?Citation:
Envoyé par farscape
si ton probleme est de saisir en hexa il suffit de filtrer les caracteres,
la deduction de la valeur saisie peut se faire a la sortie de l'edit : perte de focus
touche entrée etc..
:D
Excusez moi de m'exprimer mal. Je m'explique.Citation:
Envoyé par farscape
dans une CEdit j'écris ceci à partir du clavier: 0FFF5EDC.
Je voudrais stocker ces 4 bytes dans la variable suivante:
Code:unsigned char Address[3];
tu peux m'expliquer comment tu comptes noter 0FFF5EDC dans 3 octets ?Citation:
Envoyé par zantar
tu veux un representation ascii ?
c'est a dire une chaine contenant "0FFF5EDC" ? ou stocker la valeur numerique ?
soit plus explicite .
:D
Excusez moi c'estCitation:
Envoyé par farscape
et je voudrais stocker la valeur numerique.Code:unsigned char Address[4];
C'est une application qui saisit au clavier une addresse sur 4 bytes et l'envoie par le port série à un microcontrolleur.
re,
pas de pb c'est juste pour etre sur que l'on parle de la meme chose !,
conversion d'une chaine hexa en numerique
il suffira d'envoyer &ul sur 4 octets ...Code:
1
2
3
4 char *stopstring; /* Convert the string: */ int ul = strtoul("0FFF5EDC" , &stopstring, 16 );
ou si tu veux vraiment une chaine:
:DCode:
1
2
3
4
5
6 char *stopstring; /* Convert the string: */ int ul = strtoul("0FFF5EDC" , &stopstring, 16 ); unsigned char Address[4]; memmove(Address,&ul,sizeof(ul));
Exactement ce que je recherchais.Citation:
Envoyé par farscape
Je vous remercie pour votre devouement à ce forum.
A la limite tu dois pouvoir même faire :
Code:
1
2 unsigned char Address[4]; * (unsigned long *)Address = strtoul("0FFF5EDC" , &stopstring, 16 );
Normalement (et à supposer qu'on soit en 32bits), oui, ça marche.
pourquoi supposer qu'on est en 32 bits ? strtoul renvoyant un unsigned long, quelle que soit la plateforme, ça doit fonctionner (ah oui, à cause du unsigned char Adresse[4])Citation:
Envoyé par Médinoc
Et surtout parce que sous Win64, un long fait toujours 32 bits:
C'est le long long et le size_t qui en font 64.
Cela permet plus de compatibilité avec le code précédent...