如何在C/C++中将16位无符号数输出带前导零的十六进制格式到终端
十六进制固定4位输出的实现方法
C 语言方案
你遇到的问题是%X格式符默认仅按数值实际位数输出,要实现固定4位、不足补前导0的效果,修改格式控制符即可:
0表示宽度不足时用字符0填充,而非默认的空格4表示设置最小输出宽度为4个字符
所以格式化字符串改为0x%04X就可以得到预期输出。
如果你的变量是标准16位无符号类型uint16_t,更推荐使用<inttypes.h>提供的格式宏保证跨平台兼容性,示例代码如下:
#include <stdio.h> #include <inttypes.h> int main() { uint16_t number = 0xFFE; // 通用写法 printf("0x%04X\n", number); // 适配uint16_t的规范写法 printf("0x%04" PRIX16 "\n", number); return 0; }
如果需要输出小写十六进制字符,将%X替换为%x、PRIX16替换为PRIx16即可。
C++ 方案
你可以直接沿用上述C语言的printf写法,也可以用iostream流控制实现,需要引入<iomanip>头文件配置输出规则:
#include <iostream> #include <iomanip> #include <cstdint> int main() { uint16_t number = 0xFFE; std::cout << "0x" << std::hex << std::uppercase << std::setfill('0') << std::setw(4) << number << std::endl; return 0; }
同样,去掉std::uppercase配置就可以输出小写十六进制字符。
内容的提问来源于stack exchange,提问作者SergeyMC9730
相关产品推荐
相关产品推荐

