2017-01-24 3 views
2

ich ein char-Array haben von Hex-Werte zusammen, die in etwa so aussieht:C fprintf hexadezimal falsche Ausgabe

char str[] = 
     "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" 
     "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" 
     "\x80\xe8\xdc\xff\xff\xff"; 

Nach diesen String Manipulation, möchte ich fprintf diese Zeichenfolge in eine Datei diese Anweisung:

fprintf(fp, "%X\n", str);

aber ich bin eine Ausgabe ähnlich wie diese bekommen:

65C58A20 

Scheint wie es zu einer einzigen Hex-Nummer kondensiert wurde. Wie kann ich fprintf die str in der gleichen Form habe ich oben erklärt, mit separaten Hex-Werten für jedes einzelne Byte?

+0

Might 'sprintf()' Arbeit? Benutzen Sie es, um das Char-Array in eine Zeichenkette umzuwandeln, und drucken Sie diese Zeichenkette stattdessen in die Datei? – verbose

+0

Warum '% X' ?! Hast du das Handbuch zu 'printf' gelesen? –

+1

'fprintf (fp,"% 02X \ n ", (vorzeichenloses Zeichen) str [index])' – BLUEPIXY

Antwort

2

Was Sie brauchen, ist dies:

for (size_t i = 0; i != sizeof str - 1; ++i) 
    fprintf(fp, "\\x%02x", (unsigned char)str[i]); 
+1

[Demo] (https://ideone.com/Y4LkvP) –

+0

Danke, +1 ... – TheEyesHaveIt