十六进制的c ++ std :: cout

was*_*256 0 c++ hex output

printf在C++中有一个输出语句,如下所示:

for(int i=0; i<6; i++)
        printf("%.2X", (unsigned char) iter->hwaddress[i]);
Run Code Online (Sandbox Code Playgroud)

我需要输出std::cout,我试着这样做:

for(int i=0; i<6; i++)
   cout << hex << (unsigned char) iter->hwaddress[i];
Run Code Online (Sandbox Code Playgroud)

但这只是给了我:

  ?:?:w:?:?:
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

Bar*_*rry 7

你需要把它投射到hex:

char c = 15;
cout << hex << setfill('0') << setw(2) << static_cast<int>(c); // prints "0f"
Run Code Online (Sandbox Code Playgroud)

char只影响整数I/O,它char不被认为是 - 所以你的代码最终仍然输出实际的chars.