L'impression de la représentation hexadécimale d'un char tableau[]
J'ai un tableau de 8 octets que je suis en train d'imprimer la notation hexadécimale. À l'aide de printf("%x", array)
je peux obtenir le premier octet et l'imprimer mais je suis "0xffffff9b"
ou quelque chose du genre. Est-il un moyen d'obtenir la notation sans le "f"?
Je voudrais imprimer chaque élément à la recherche de quelque chose comme:
0x9a, 0x43, 0x0D
, etc.
Faire de votre type de tableau de
stackoverflow.com/questions/6357031/...
unsigned char []
plutôt que char []
.stackoverflow.com/questions/6357031/...
OriginalL'auteur MCP | 2012-04-29
Vous devez vous connecter pour publier un commentaire.
Ce:
seront les plus susceptibles d'imprimer la adresse du premier élément de ton tableau en hexadécimal. Je dis "probablement", car le comportement d'essayer d'imprimer une adresse comme si elle était une
unsigned int
est pas défini. Si vous avez vraiment envie d'imprimer l'adresse, la bonne façon de le faire serait:(Un tableau de l'expression, dans la plupart des contextes, est convertie implicitement ("désintègre") un pointeur vers le premier élément du tableau.)
Si vous souhaitez imprimer chaque élément de votre groupe, vous aurez à le faire explicitement. Le
"%s"
format prend un pointeur vers le premier caractère d'une chaîne et ditprintf
pour effectuer une itération sur la chaîne, l'impression de chaque personnage. Il n'y a pas de format qui fait ce genre de chose en hexadécimal, de sorte que vous aurez à faire vous-même.Par exemple, étant donné:
vous pouvez imprimer l'élément 5 comme ceci:
ou, si vous voulez un zéro:
La
"%x"
format nécessite ununsigned int
argument, et launsigned char
valeur que vous êtes en passant est implicitement promu àunsigned int
, c'est donc de type correct. Vous pouvez utiliser"%x"
pour imprimer les chiffres hexadécimauxa
parf
en minuscules,"%X"
pour les majuscules (que vous avez utilisé à la fois dans votre exemple).(À noter que la
"0x%02x"
format qui fonctionne le mieux si les octets de 8 bits, ce n'est pas garanti, mais c'est presque certainement le cas sur n'importe quel système, vous êtes susceptible d'utiliser.)Je vais le laisser, à vous d'écrire la boucle approprié et de décider de la façon de délimiter la sortie.
OriginalL'auteur Keith Thompson
C'est ce que j'ai fait, c'est un peu plus facile avec une fonction et j'ai utiliser pour le débogage et la journalisation de la mémoire.
Très bonne suggestion! Merci.
OriginalL'auteur Andy