Formatbezeichner für hex-char in C
Ist es ein Formatbezeichner für sprintf
in C, dass die Karten ein char
um hex in der gleichen Weise, dass %x
Karten ein int
auf hex?
was meinst du map char to hex? sprintf Formaten von strings mit fester Werte, ein char ist genau ein fester Wert also, wenn Sie meinen, die hex von der dezimal-Wert, der hinter einem char dann verwenden Sie einfach
Ich denke, ich will nur die Anzeige des 1-byte-hex-statt 4 bytes.
%x
Ich denke, ich will nur die Anzeige des 1-byte-hex-statt 4 bytes.
InformationsquelleAutor Daniel | 2012-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja und Nein.
Seit
sprintf
nimmt eine variable Argumentliste, alle Argumente Durchlaufen Standard-Förderung vorsprintf
erhält. Das bedeutet, dasssprintf
wird nie erhaltenchar
-- einchar
immer gefördert werden, umint
vorsprintf
erhält (und eineshort
wird).Ja, was da
sprintf
erhält eineint
verwenden, können Sie%x
konvertieren hex-format, und es werden die gleiche Arbeit, ob dieser Wert begann alschar
,short
oderint
. Wenn (wie es oft der Fall ist), die Sie drucken möchten 2 Zeichen für jeden Eingang verwenden, können Sie%2.2x
.Vorsicht ein Punkt aber: wenn Ihr
char
signiert ist, und Sie beginnen mit einem negativen Wert, die Förderung zuint
produzieren den gleichen numerischen Wert, der normalerweise nicht die gleiche bit-Muster wie der original-char, also (zum Beispiel) ein char mit dem Wert-1
normalerweise ausdrucken, wieffff
wennint
ist 16 bits,ffffffff
wenn int ist 32 bit, oderffffffffffffffff
wennint
64 bit (vorausgesetzt, die typische 2-Komplement-Darstellung für Ganzzahlen mit Vorzeichen).InformationsquelleAutor Jerry Coffin
Ist das das gleiche
%x
. Allechar
Werte sind Umgerechnet aufint
vor der übergabe ansprintf
(oder jede andere Funktion mit variabler Anzahl von Parametern).Drucke
61
printf(%x\n", (char)0x90);
Druckeffffff90
, wenn ich will, es zu drucken90
Ich will auch
printf(%x\n, (char)1)
drucken01
statt1
.verwenden
%02x
zu zwingen, zero-padding, die zwei Zeichen ausgegeben.Casting
0x90
zuunsigned char
stattchar
beheben die sign-extension problem.InformationsquelleAutor dasblinkenlight