2016-09-04 4 views
0

Я относительно новым для C. У меня есть двоичный буфер, который я хочу, чтобы печатать на стандартный вывод, например, так:Как печатать двоичные данные в C?

unsigned char buffer[1024]; 

Есть ли способ использовать Printf для вывода этого на стандартный вывод? Я взглянул на страницу man для printf, однако нет упоминания о unsigned char*, только const char* для %s.

Я полагаю, что я мог бы перебрать буфер и сделать putchar(buffer[i]), однако я думаю, что это было бы довольно неэффективно. Есть ли способ сделать это с помощью printf? Должен ли я использовать что-то вроде fwrite вместо этого, было бы более целесообразным?

Спасибо.

Редактировать: Извините за недоразумение, я не хочу конвертировать ничего в шестнадцатеричную/двоичную нотацию, просто напишите буфер как есть. Например, если бы у меня было [0x41 0x42 0x42 0x41] в буфере, я бы хотел напечатать «ABBA».

+4

Да, 'fwrite' это путь. – redneb

+1

Вы можете использовать printf с «% x» для печати каждого символа в шестнадцатеричном формате. – Mick

+0

'printf' с двоичной строкой может оказаться ошибкой, если вы используете'% s', так как '% s' будет прервана на первом символе NUL, хотя в этих обстоятельствах NUL часто является допустимым значением. – Myst

ответ

1

Как @redneb сказал fwrite следует использовать для этого:

#include <stdio.h> 

size_t size = sizeof(buffer); /* or however much you're planning to write */ 
fwrite(buffer, 1, size, stdout); 
Смежные вопросы