Précédent   Forum des professionnels en informatique > Général Développement > Programmation système > Windows
Windows Forum d'entraide sur la programmation Windows. Tutoriel API Windows
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2012, 09h52   #1
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
Par défaut conversion avec printf : cas des octets

sous linux, pour faire la conversion en octal ou hexadecimal d'un octet, on utilise le prefixe hh (%hho et %hhx respectivement). J'ai regardé la documentation de printf dans MSDN, mais je n'ai pas trouvé un moyen de le faire. Comment puis-je faire cette conversion ? Même question pour un octet signé et non signé (%hhd et %hhu sous linux). En gros, j'ai l'impression que je ne peux utiliser que %c, c'est à dire un caractère (et non un nombre entier codé sur une octet)

Enfin, est-ce normal de ne pas pouvoir faire du padding de 0 avec la conversion %c ? Par exemple, j'ai un avertissement quand j'essaie d'utiliser %02c. C'est peut-être relié au fait que c'est un caractère et non un nombre entier qui est converti.

Merci
__________________
L'Opus attire les Prélats
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 17h08   #2
Membre habitué
 
Inscription : mars 2009
Messages : 208
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 208
Points : 104
Points : 104
salut ,je pense que le code de conversion que tu cherches est "x" ou "X" selon que tu souhaites avoir des majuscules ou pas !
exe2bin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 19h29   #3
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 487
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 21 487
Points : 28 768
Points : 28 768
Envoyer un message via MSN à Médinoc
%hh, c'est du C99 en grande partie (je sais que c'est le cas pour scanf(), par exemple).

Généralement, pour afficher un octet, je fais deux choses:
  • Je caste la valeur en unsigned char si elle n'en est pas déjà un, pour éviter une extension de signe malencontreuse lors d'une promotion en int
  • J'utilise le format %02X ou %02x
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 07h27   #4
Membre habitué
 
Homme
Inscription : avril 2004
Messages : 305
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 305
Points : 130
Points : 130
Citation:
Envoyé par Médinoc Voir le message
%hh, c'est du C99 en grande partie (je sais que c'est le cas pour scanf(), par exemple).

Généralement, pour afficher un octet, je fais deux choses:
  • Je caste la valeur en unsigned char si elle n'en est pas déjà un, pour éviter une extension de signe malencontreuse lors d'une promotion en int
  • J'utilise le format %02X ou %02x
Oui, ca pourrait marcher. Merci.
__________________
L'Opus attire les Prélats
d'Oursse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h34.


 
 
 
 
Partenaires

Hébergement Web