2013-04-21 231 views
0

用Winsock编写代码。
我现在有这样的:以十六进制表示的C++ fwrite()

fwrite(buff, 1, len, stdout); 

如何做到这一点,如:

for (int i = 0; i < len; i++) { 
printf("%02x ", unsigned char (buff[i])); 
} 
printf("\n"); 

或者我应该只是删除的fwrite和使用打印呢?
我想写它到标准输出,因为我有我的选择要么写入标准输出写入文件。

回答

2

fprintf(见the docs)就像是printf但到任意文件:

fprintf(stdout, "%02x ", unsigned char (buff[i])); 
+1

一个'无符号char'将晋升为'自动int',因为它是在参数列表中的变量参数部分'fprintf()'和默认促销适用于这些。转换为'unsigned char'也可以做一些很好的事情;如果'char'类型是带符号的,则转换会阻止高位设置(0x80..0xFF)字符的符号扩展。 (严格来说,'%x'需要一个'unsigned int' - 无论如何,它会将传递的内容视为一个'unsigned int')。 – 2013-04-21 21:05:13

+0

@JonathanLeffler:谢谢! - 我不知道。答复修正。 – RichieHindle 2013-04-21 21:06:25

+0

我明白了;我会留下我的第一条评论,因为它可能会帮助其他人;我很快就会删除这个内容,您是否删除了您的评论取决于您。 – 2013-04-21 21:07:16