convertir un int en hexa - C - Programmation
Marsh Posté le 02-03-2012 à 19:51:39
Convertir un nombre décimal en hexadécimal est relativement facile, ça ne devrait pas être un problème.
www.google.fr/#hl=fr&sclient=psy-a [...] exadécimal
Par contre si tu veux stocker un nombre en hexadécimal le mieux est un char *, il serait difficile de stocker les lettres ABCDEF de la base hexa dans un int.
Tu pourras être aussi intéressé par la fonction sprintf:
http://www.cplusplus.com/reference [...] o/sprintf/
Marsh Posté le 02-03-2012 à 19:55:36
Citation : Je connais %x pour les printf mais comment le remettre dans une variable int? |
Mais il est déjà dans la variable int: 100 en décimal et 0x64 en hexa ne sont toutes deux que des représentations de la même valeur de ton int, qui est en fait stockée en binaire.
Tu as pas compris la nuance entre la valeur d'un nombre (un int) et sa représentation au moyen d'une suite de symboles (une chaîne de caractères)
A+,
Marsh Posté le 02-03-2012 à 20:53:18
gilou a écrit :
Mais il est déjà dans la variable int: 100 en décimal et 0x64 en hexa ne sont toutes deux que des représentations de la même valeur de ton int, qui est en fait stockée en binaire. |
Oui mais quand je vais envoyer mes trames de la forme int var =0xFE; sur le port série il va m'envoyer ça en hexa alors que si j'envoie ma variable int var2=100; il va me l'envoyer en ASCII donc 0x313030 =! 0x64, ou je me plante?
merci
Marsh Posté le 02-03-2012 à 21:29:17
Non non et non. Tu te plantes.
Dans les deux cas, il envoie du binaire.
Et si tu fais int var = 0x64; ou bien int var = 100; il enverra la même chose, puisque dans les deux cas la variable var contient la même valeur binaire 1100100 et que c'est ce binaire qui part sur ton port série.
Le port série, il connait que le binaire. Si ton binaire est celui de la valeur d'un int, c'est cette valeur qui sera envoyée.
A+,
Marsh Posté le 02-03-2012 à 22:02:03
gilou a écrit : Non non et non. Tu te plantes. |
Ok je viens de comprendre.
Si je fais :
char var = "100"; => en hexa il va envoyer ça : 0x313030
int var = 100; => en hexa il va envoyer ça : 0x64
Là je pense pas me planter.
Merci
Marsh Posté le 02-03-2012 à 22:49:35
char *var = "100"; => en hexa il va envoyer ça : 0x31 0x30 0x30 0x00 (chaîne terminée par 0 en C)
int var = 100; => en hexa il va envoyer ça : 0x64 (avec éventuellement des 0x00 devant selon le nb de bits (16, 32, 64) utilisés pour représenter un int dans ton système et/ou la taille du registre associé à ton port)
Oui.
A+,
Marsh Posté le 02-03-2012 à 19:37:32
Salut à tous,
Je suis en train de coder une appli en c pour dialoguer avec un pic part le port série. Je voudrait que l'utilisateur rentre un nombre, par exemple 100 et que le programme le convertisse en hexa et l'envoie sur le port série. J'arrive bien à envoyer des données sur le port série mais j'ai un autre problème. Y a t'il une fonction pour convertir mon nombre 100 par exemple en hexa qui serait ici 64? En gros j'ai une variable nombre=100; et je voudrait avoir avec une fonction nombre_hexa=0x64; automatiquement. Je connais %x pour les printf mais comment le remettre dans une variable int?
Merci de votre aide.