c++如何将16进制数输出_c++ cout hex用法【笔记】

12次阅读

使用 std::hex 操纵符可使 cout 输出十六进制数(不带前缀),如 int x = 255; std::cout

c++ 如何将 16 进制数输出_c++ cout hex 用法【笔记】

如何用 cout 输出十六进制数(不带前缀)

默认情况下,cout 输出整数是十进制。要切到十六进制,需配合 std::hex 流操纵符:

int x = 255; std::cout <

注意:std::hex 是 ** 状态切换 **,一旦设置,后续所有整数输出都会按十六进制,直到被其他进制操纵符(如 std::dec)覆盖。

如何输出大写十六进制(A-F 而非 a-f)

仅用 std::hex 默认输出小写字母。要转大写,必须额外加上 std::uppercase

int x = 255; std::cout <

顺序无关紧要,但两者都得显式写出;漏掉 std::uppercase 就永远是小写。

如何补零并固定宽度(比如输出 4 位:00FF)

补零靠 std::setfillstd::setw,但要注意:它们只对 ** 下一个输出项 ** 生效,且 std::setw 不影响进制切换本身:

#include  int x = 255; std::cout <

常见错误:

  • 忘了 #include → 编译失败
  • std::setw 放在 std::hex 前面 → 无效(它只修饰紧随其后的输出)
  • 重复使用同一 std::setw → 只对下一次输出起作用,之后需重设

如何输出带 0x 前缀的十六进制

std::hex 本身不加前缀。要输出 0x,只能手动拼接:

int x = 255; std::cout <<"0x" << std::hex << std::uppercase << x; // 输出 "0xFF"

没有内置操纵符能自动加前缀;若用 printf 风格,可考虑 std::format(C++20):

std::cout <

std::format 在旧编译器上不可用,兼容性不如手动拼接。

最易忽略的是流状态的持久性——std::hex 一旦设置,会影响之后所有整数输出,哪怕跨函数调用。如果只是临时需要十六进制,最好在输出后显式切回 std::dec,否则可能引发下游逻辑误输出。

text=ZqhQzanResources