2016-08-16 3 views
1

Also sage ich:In C, wie char [] als Escape-Hex ausgeben?

char [] = "cat" 

ich es in entkam hex drucken möchten, so dass es wie folgt aussieht:

"\x63\x61\x74" 

Gibt es eine Möglichkeit, dies zu tun, ohne das Parsen/Konstruktion eines neuen char[] mit der entkommen hex?

+0

Siehe [diese Antwort] (http://stackoverflow.com/a/16519793/4520911) hier ... Auf eine andere Anmerkung: _ "Gibt es eine Möglichkeit, dies zu tun wi Das Parsing/Konstruieren eines neuen 'char []' mit dem Escape-Hex? "_ Hmm ... Parse bedeutet im Grunde, etwas in kleinere Teile zu zerlegen/zu analysieren. Wie können Sie so etwas ausdrucken, ohne jedes einzelne Zeichen zu "parsen"? – iRove

Antwort

1

Sie können es tun, indem x in Ihrem printf Format-String mit:

for(i = 0; i < n; i++) { 
    printf("\\x%02x", (unsigned char)str[i]); 
} 
2

Sie brauchen keine neuen char[], eine Schleife mit printf zu bauen zu tun:

char c[] = "cat"; 
size_t len = strlen(c); 
for (size_t i = 0 ; i != len ; i++) { 
    printf("\\x%02x", (unsigned char)c[i]); 
} 

Demo.

+1

Anstatt magische Zahlen zu verwenden, würde nach "\ 0" suchen. Immerhin ist es eine C-Saite. – Olaf

+0

@ M.M Fest. Vielen Dank! – dasblinkenlight