我想要做:
int a = 255; cout << a;
并在输出中显示FF,我该怎么做?
使用:
#include... std::cout << std::hex << a;
还有许多其他选项可以控制输出编号的确切格式,例如前导零和大写/小写.
std::hex
定义
包括在内
.但要使用像std::setprecision/std::setw/std::setfill
/ etc 这样的东西你必须包含
.
要操纵流以十六进制打印,请使用hex
操纵器:
cout << hex << a;
默认情况下,十六进制字符以小写形式输出.要将其更改为大写,请使用uppercase
操纵器:
cout << hex << uppercase << a;
要稍后将输出更改回小写,请使用nouppercase
操纵器:
cout << nouppercase << b;
如果要打印单个十六进制数,然后恢复为十进制,可以使用:
std::cout << std::hex << num << std::dec << std::endl;
您也可以使用不同种类的旗帜和面具.有关更多信息,请参阅http://www.cplusplus.com/reference/iostream/ios_base/setf/.
#includeusing namespace std; int main() { int num = 255; cout.setf(ios::hex, ios::basefield); cout << "Hex: " << num << endl; cout.unsetf(ios::hex); cout << "Original format: " << num << endl; return 0; }
我知道这不是OP要求的,但我仍然认为值得指出如何用printf来做.我几乎总是喜欢在std :: cout上使用它(即使没有以前的C背景).
printf("%.2X", a);
'2'定义精度,'X'或'x'定义大小写.
std::hex
让您获得十六进制格式,但这是一个有状态的选项,这意味着您需要保存和恢复状态,否则将影响以后的所有输出。
天真地切换回原来的状态std::dec
是好的,那可能不是事实,尤其是在编写库时。
#include#include ... std::ios_base::fmtflags f( cout.flags() ); // save flags state std::cout << std::hex << a; cout.flags( f ); // restore flags state
这结合了Greg Hewgill的回答和其他问题的信息。