Drucken Sie die hexadezimale Darstellung eines char array[]
Ich habe ein array von 8 bytes, dass ich versuche, drucken Sie die hexadezimale notation. Mit printf("%x", array)
ich kann auf das erste byte und drucken Sie es aus, aber ich bin immer "0xffffff9b"
oder so etwas in der Art. Gibt es eine Möglichkeit, um die Schreibweise ohne das "f"?
Möchte ich drucken Sie jedes element auf der Suche etwas wie:
0x9a, 0x43, 0x0D
usw.
- Machen Sie Ihr array-Typ
unsigned char []
eher alschar []
. - stackoverflow.com/questions/6357031/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese:
wahrscheinlich drucken die Adresse des ersten Elements des Arrays in hexadezimaler. Ich sage "wahrscheinlich" weil das Verhalten von Versuch zu drucken eine Adresse, als ob es eine
unsigned int
ist nicht definiert. Wenn Sie wirklich etwas drucken wollte, der Adresse, der richtige Weg, es zu tun wäre:(Ein array-Ausdruck, in den meisten Kontexten, die implizit in ("zerfällt") ein Zeiger auf das array das erste element.)
Wenn Sie möchten, drucken Sie jedes element Ihres Arrays, müssen Sie dies ausdrücklich. Die
"%s"
- format nimmt einen Zeiger auf das erste Zeichen einer Zeichenfolge und erzähltprintf
Durchlaufen den string-Druck jedes Zeichen. Es gibt kein format, das bedeutet, dass Art der Sache in hexadezimal, also müssen Sie es selbst zu tun.Beispiel:
können Sie drucken-element 5 so:
oder, wenn Sie möchten, eine führende null:
Den
"%x"
- format erfordert eineunsigned int
argument, und dieunsigned char
Wert, den Sie übergeben haben wird implizit gefördert zuunsigned int
, also das ist Typ-korrekt. Sie können"%x"
zum drucken der hex-Zifferna
durchf
im unteren Fall"%X"
für GROSSBUCHSTABEN (Sie verwendet, sowohl in deinem Beispiel).(Beachten Sie, dass die
"0x%02x"
- format funktioniert am besten, wenn Byte sind 8 bits, das ist nicht garantiert, aber es ist fast sicher der Fall, auf jedem system, sind Sie wahrscheinlich zu verwenden.)Lasse ich es zu, dass Sie schreiben die entsprechenden Schleife und entscheiden, wie zum begrenzen der Ausgabe.
Dies ist, was ich getan habe, es ist ein bisschen einfacher, eine Funktion, mit der und ich für das debugging und logging Speicher.
Print ein string in hex: