Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1069 connectés 

  FORUM HardWare.fr
  Programmation
  C

  convertir un int en hexa

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

convertir un int en hexa

n°2129438
hppp
Serveur@home
Posté le 02-03-2012 à 19:37:32  profilanswer
 

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.

mood
Publicité
Posté le 02-03-2012 à 19:37:32  profilanswer
 

n°2129444
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 02-03-2012 à 19:51:39  profilanswer
 

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/


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2129446
gilou
Modérateur
Modzilla
Posté le 02-03-2012 à 19:55:36  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2129453
hppp
Serveur@home
Posté le 02-03-2012 à 20:53:18  profilanswer
 

gilou a écrit :

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+,


 
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

n°2129458
gilou
Modérateur
Modzilla
Posté le 02-03-2012 à 21:29:17  profilanswer
 

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+,

Message cité 1 fois
Message édité par gilou le 02-03-2012 à 21:30:48

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2129463
hppp
Serveur@home
Posté le 02-03-2012 à 22:02:03  profilanswer
 

gilou a écrit :

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+,


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  :jap:

n°2129470
gilou
Modérateur
Modzilla
Posté le 02-03-2012 à 22:49:35  profilanswer
 

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+,


Message édité par gilou le 03-03-2012 à 09:24:05

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  convertir un int en hexa

 

Sujets relatifs
Convertir un String 'hexa' en hexa purConvertir Chaine de caractères vers hexa
[resolu] Convertir un entier en chaine représentant sa valeur hexaConvertir un nombre Hexa en ASCII
convertir en hexa[RESOLU]Convertir un entier en HEXA sur un nombre de bits
[VB] Convertir une couleur Hexa en Couleur Long 16bitsConvertir une chaine char* en hexa en entier [Résolu]
[java]convertir un int decimal en hexa et faire ensuite un masque?[problème] programme en assembleur pour convertir lettre en hexa
Plus de sujets relatifs à : convertir un int en hexa


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR