2013-04-21 6 views
0

Winsock으로 코드 작성.16 진수 C++ fwrite()

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

을 아니면 그냥 대신 인쇄를에 fwrite를 제거하고 사용해야합니다

fwrite(buff, 1, len, stdout); 

이 어떻게 좋아하려면 :
나는 현재이 있나요?
stdout에 쓰고 싶었는데, 표준 옵션으로 파일에 쓸 수있었습니다.

답변

2

fprintf은 (the docs 참조) printf처럼하지만, 임의의 파일입니다 :는`부호 char`가`로 승격됩니다

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

자동으로 int'는 인수 목록의 변수 인수 부분에 있기 때문에 'fprintf()'와 디폴트 프로모션이 적용됩니다. 'unsigned char'에 캐스트하면 좋을 수도 있습니다; 'char' 타입이 사인되면, 캐스팅은 높은 비트 세트 (0x80..0xFF)로 문자의 부호 확장을 방지합니다. (엄격히 말하면,'% x'는'unsigned int'를 기대합니다 - 그것은'unsigned int'와 같이 전달되는 것을 처리 할 것입니다.) –

+0

@JonathanLeffler : 고마워요! - 나는 그것을 몰랐다. 답변이 수정되었습니다. – RichieHindle

+0

나는 그것을 본다; 다른 사람들에게 도움이 될 수 있기 때문에 나는 첫 코멘트를 남겨 둘 것이다. 나는 이것을 곧 삭제할 것이고, 당신이 당신의 코멘트를 삭제했는지 여부는 당신에게 달려있다. –