Я относительно новым для C. У меня есть двоичный буфер, который я хочу, чтобы печатать на стандартный вывод, например, так:Как печатать двоичные данные в C?
unsigned char buffer[1024];
Есть ли способ использовать Printf для вывода этого на стандартный вывод? Я взглянул на страницу man для printf, однако нет упоминания о unsigned char*
, только const char*
для %s
.
Я полагаю, что я мог бы перебрать буфер и сделать putchar(buffer[i])
, однако я думаю, что это было бы довольно неэффективно. Есть ли способ сделать это с помощью printf? Должен ли я использовать что-то вроде fwrite
вместо этого, было бы более целесообразным?
Спасибо.
Редактировать: Извините за недоразумение, я не хочу конвертировать ничего в шестнадцатеричную/двоичную нотацию, просто напишите буфер как есть. Например, если бы у меня было [0x41 0x42 0x42 0x41]
в буфере, я бы хотел напечатать «ABBA».
Да, 'fwrite' это путь. – redneb
Вы можете использовать printf с «% x» для печати каждого символа в шестнадцатеричном формате. – Mick
'printf' с двоичной строкой может оказаться ошибкой, если вы используете'% s', так как '% s' будет прервана на первом символе NUL, хотя в этих обстоятельствах NUL часто является допустимым значением. – Myst