2009-10-25 9 views
9

char의 16 진수 값을 출력하고 좋은 방식으로 형식을 지정하려고합니다.C++ 16 진수 형식

필수 : ​​0x01 : value 0x1

내가 얻을 수있는 모든은 다음과 같습니다 00x1 : value 0x1 // 또는 0x1로 내가

을 iomanip 사용하지 않을 경우 여기 내가 가지고있는 코드이다는 '채널'은 서명 숯불로 선언했다. 값을 확인하고 수동으로 '0'을 추가하는 것 이외의 다른 방법이 있습니까 ??

cout << showbase; 
cout << hex << setw(2) << setfill('0') << (int) ch; 

편집 :

나는 하나의 솔루션을 온라인으로 발견 : 전체 인쇄 된 번호의 왼쪽 밖으로

cout << internal << setw(4) << setfill('0') << hex << (int) ch 

답변

13
std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch; 

setw 이후 패드 (showbase 적용 후), showbase ISN 귀하의 경우에 사용할 수 없습니다. 대신 위에 표시된대로 수동으로 인쇄하십시오. 내가 이런 짓을 내 프로젝트 하나에서

0

:

ostream &operator<<(ostream &stream, byte value) 
{ 
    stream << "0x" << hex << (int)value; 
    return stream; 
} 

나는 스트림 출력에 대한 운영자 < <을 surchaged 및 바이트 16 진수로 줬습니다 아무것도. byte는 unsigned char의 typedef입니다.