Druck-string in hex?
Ist diesen kurzen Weg für das drucken der string in hex ist das so richtig? Wenn nicht, wie sollte es behoben werden?
uint8_t *m = string;
int c = sizeof(string);
while(c--){
printf("%02x ", *(m++));
}
- Was macht du diese Frage?
- einfach nur neugierig
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kein "oneliner", Nein. Neben der code sieht defekt aus.
Können Sie nicht verwenden
sizeof
so, du meinst wohlstrlen()
.Und Sie müssen die Darsteller den Charakter in einen unsigned-Typ, um sicher zu sein.
So, so etwas vielleicht:
Beachten Sie, dass ich nicht nennen
strlen()
, da es keinen Punkt in der Iteration über die Schnur zweimal als einmal tun. 🙂sizeof
kann in Ordnung sein, wenn er den Umgang mit einem einfachen array, z.B.uint8_t string[] = { 0x01, 0x02, 0x03 };
. Allerdings sein könnte wäre ein " off-by-one (while
loops liest ein Zeichen zu viel.while(--c)
in meinem Fall? aber dann die \00 nicht gedruckt...while(c--
) wäre fein. Allerdings, wenn das array immer null-terminiert Sie nicht verwenden diec
variable, sondern nur die Verwendungwhile(*m)
.Ich denke technisch "string" ist hier irreführend; Sie scheinen zu werden, drucken Sie ein array (nicht notwendigerweise null-terminiert) der
uint8_t
Werte.Müssen Sie eine Schleife in jedem Fall. Wenn Sie verwenden können, C99, könnten Sie schreiben,
Wenn das array ist null-terminierte und brauchen Sie nicht den ursprünglichen Wert von
string
(dies ist oft eine Falle bei der übergabe des Zeiger-by-value), die Sie haben könnten