0

0

C++ 怎么输出十六进制 C++ cout hex格式化输出教程【格式】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-01 17:02:16

|

206人浏览过

|

来源于php中文网

原创

使用 std::hex 需配合 std::showbase 加 0x 前缀、std::uppercase 控制大小写、std::setw 与 std::setfill 补零;负数按补码输出,指针须转 uintptr_t;推荐封装函数统一格式。

c++ 怎么输出十六进制 c++ cout hex格式化输出教程【格式】

直接用 std::hex 配合 std::cout 即可输出十六进制,但默认不补零、不带 0x 前缀、大小写和字段宽度需手动控制——这些恰恰是实际开发中最常出错的地方。

怎么让 cout 输出带 0x 前缀的十六进制

仅用 std::hex 不会自动加 0x,必须搭配 std::showbase

#include 
int main() {
    std::cout << std::hex << std::showbase << 255 << '\n'; // 输出: 0xff
}
  • std::showbasestd::hex 生效时加 0x,对 std::oct0,对 std::dec 无影响
  • 前缀大小写由后续是否启用 std::uppercase 决定(见下一条)
  • 一旦设置 std::showbase,它会持续生效,直到被 std::noshowbase 关闭

怎么控制字母大小写和补零位数

十六进制字母默认小写,数字不自动补零;需分别用 std::uppercasestd::setw+std::setfill

#include 
std::cout << std::hex << std::uppercase << std::showbase
          << std::setw(4) << std::setfill('0') << 255 << '\n'; // 输出: 0X00FF
  • std::uppercase 影响前缀(0X)和字母(A-F),不是只改字母
  • std::setw 只对下一个输出项生效,必须和 std::setfill 配合才能补零
  • 如果要固定 8 位(如打印指针或寄存器值),常用 std::setw(8)

为什么 int 类型负数输出结果看起来“不对”

因为 std::hex 直接按二进制补码解释整数,不会做符号扩展或转换处理:

讯飞星火
讯飞星火

科大讯飞推出的多功能AI智能助手

下载

立即学习C++免费学习笔记(深入)”;

std::cout << std::hex << -1 << '\n'; // 在 32 位系统上通常输出: ffffffff
  • 这不是 bug,而是底层位模式的直接呈现。-1 的 32 位补码就是全 1
  • 若想输出带符号的十六进制(比如显示为 -0x1),C++ 标准流不支持,得自己判断正负后手动拼接
  • 更安全的做法:对负数先转成无符号类型再输出,例如 static_cast(x)

输出指针地址时的常见陷阱

直接用 std::hex 输出指针会报错或行为未定义,必须先转成 uintptr_t

#include 
int x = 42;
std::cout << std::hex << std::showbase
          << reinterpret_cast(&x) << '\n';
  • 不能对 void* 直接用 + std::hex,某些编译器会调用重载的指针输出(即显示地址但不走 hex 流控)
  • uintptr_t 是能容纳指针的无符号整数类型,来自
  • 若需统一格式(如 16 进制小写+0x+16 位宽),建议封装成函数,避免每次重复写一长串 manipulator

真正麻烦的从来不是“怎么打出十六进制”,而是“怎么让每种场景下的输出都稳定、可读、符合协议”——尤其是混合调试日志、内存 dump 和协议字段打印时,std::hex 的状态残留、setw 作用域、有符号/无符号混用,最容易在深夜排查问题时悄悄翻车。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

503

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

545

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

113

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

200

2025.08.29

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

177

2023.11.23

java中void的含义
java中void的含义

本专题整合了Java中void的相关内容,阅读专题下面的文章了解更多详细内容。

102

2025.11.27

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号