You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:06:05