2017-01-24 2 views
2

У меня есть массив символов, состоящий из шестигранных значений, который выглядит примерно так:C fprintf шестнадцатеричного некорректного вывод

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"; 

После манипулирования этой строки, я хочу fprintf эту строку в файл, используя это заявление:

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

, но я получаю результат, похожий на этот:

65C58A20 

Кажется, что он сгущен до одного шестнадцатеричного номера. Как я могу fprintfstr в том же виде, как я заявил выше, с отдельными шестнадцатеричными значениями для каждого отдельного байта?

+0

Might 'Sprintf()' работа? Используйте его, чтобы преобразовать массив символов в строку, а затем распечатать эту строку для файла? – verbose

+0

Почему '% X' ?! Вы прочитали руководство для 'printf'? –

+1

'fprintf (fp,"% 02X \ n ", (unsigned char) str [index]);' – BLUEPIXY

ответ

2

Что вам нужно это:

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

Спасибо, +1 ... – TheEyesHaveIt

Смежные вопросы