将 std::string 数字转换为十六进制数字

jnd*_*dok 3 c++ hex

我在网上搜索过,但似乎并不能解决我的问题。基本上我有一个std::string包含十六进制内存地址(例如0x10FD7F04)。显然,这个数字是从文本文件中读取并保存为std::string.

我需要将此字符串转换为 int 值,但保留十六进制表示法0x。有什么办法可以做到这一点吗?

Max*_*kin 5

您可以使用 C++11std::stoi函数:

#include <iostream>
#include <iomanip>
#include <string>

int main()
{
    std::string your_string_rep{"0x10FD7F04"};
    int int_rep = stoi(your_string_rep, 0, 16);
    std::cout << int_rep << '\n';
    std::cout << std::hex << std::showbase << int_rep << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出:

285048580
0x10fd7f04
Run Code Online (Sandbox Code Playgroud)