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

如何为uintptr_t类型变量添加0x前缀并存储带前缀的数值

核心概念说明

uintptr_t 是无符号整数类型,存储的是纯数值,0x 仅为十六进制文本表示的格式前缀,不属于数值本身的一部分,不存在「存储带0x前缀的uintptr_t值」的说法。你当前的动态地址计算逻辑完全正确,数值本身没有问题,只是输出展示时缺少前缀而已,不影响任何业务逻辑。

输出自动带0x前缀的实现

不需要手动拼接0x,引入<iomanip>头文件后使用std::showbase格式控制符,即可让cout自动为十六进制输出添加0x前缀:

#include <iostream>
#include <iomanip> // 引入格式控制所需头文件

uintptr_t modBase = GetModuleBaseAddress(pID, "ac_client.exe");
// std::hex设置十六进制输出,std::showbase自动添加0x前缀
std::cout << std::hex << std::showbase << modBase << std::endl; // 输出为 0x400000

uintptr_t dynamicBaseAddress = modBase + 0x10f4f4;
std::cout << "DynamicBaseAddress is: " << std::hex << std::showbase << dynamicBaseAddress << std::endl; 
// 输出为 DynamicBaseAddress is: 0x50f4f4
存储带0x前缀的地址

如果确实需要把带0x前缀的地址作为文本存储,可以借助std::stringstream实现格式转换:

#include <sstream>
#include <string>

std::stringstream ss;
ss << std::hex << std::showbase << dynamicBaseAddress;
std::string addrStr = ss.str(); // addrStr的值为 "0x50f4f4"

内容的提问来源于stack exchange,提问作者Dezert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:06