2016-09-04 34 views
0

我是比較新的C.我有我想要打印到標準輸出二進制緩衝區,就像這樣:如何在C中打印二進制數據?

unsigned char buffer[1024]; 

有沒有用printf輸出這個到stdout的方法嗎?我查看了printf的手冊頁,但沒有提及unsigned char*,只有const char*%s

我想我可以循環緩衝區,並做putchar(buffer[i]),但我認爲這將是相當低效。有沒有辦法使用printf來做到這一點?我是否應該使用類似fwrite的東西,那會更合適嗎?

謝謝。

編輯:對不起,我不想將任何東西都轉換爲十六進制/二進制符號,只是按原樣寫出緩衝區。例如,如果我在緩衝區中有[0x41 0x42 0x42 0x41],那麼我想打印「ABBA」。

+4

是,'fwrite'是要走的路。 – redneb

+1

您可以使用printf和「%x」以十六進制打印每個字符。 – Mick

+0

由於'%s'將在第一個NUL字符上終止,即使NUL在這些情況下經常是一個有效值,使用二進制字符串的'printf'可能會證明是錯誤的。 – 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);