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”。
是,'fwrite'是要走的路。 – redneb
您可以使用printf和“%x”以十六进制打印每个字符。 – Mick
由于'%s'将在第一个NUL字符上终止,即使NUL在这些情况下经常是一个有效值,使用二进制字符串的'printf'可能会证明是错误的。 – Myst