将std::字符串数字转换为十六进制数字
Convert std::string number in hexadecimal number
我在网上搜索过,但它似乎不能解决我的问题。基本上,我有一个std::string
,它包含一个十六进制内存地址(例如0x10FD7F04)。显然,这个数字是从文本文件中读取并保存为std::string
的。
我需要将此字符串转换为int值,但保留十六进制表示法,0x。有办法做到这一点吗?
您可以使用C++11 std::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';
}
输出:
285048580
0x10fd7f04
我需要将此字符串转换为int值,但保留十六进制表示法0x。有办法做到这一点吗?
你的问题有两部分:
-
将字符串的十六进制表示形式转换为整数。
std::string your_string_rep{ "0x10FD7F04" }; std::istringstream buffer{ your_string_rep }; int value = 0; buffer >> std::hex >> value;
-
对结果值保留十六进制表示法。这是不必要/不可能的,因为int已经是十六进制值(还有十进制值和二进制值,具体取决于您如何解释它)。
换句话说,使用上面的代码,您可以只写:
assert(value == 0x10FD7F04); // will evaluate to true (assertion passes)
或者,您可以使用类似的东西
std::string hexstring("0x10FD7F04");
int num;
sscanf( hexstring.data(), "%x", &num);
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- C++十六进制字符串转换为十六进制的字符 *
- 如何在C++中将十六进制字符串转换为字节字符串?
- 从十六进制字符串转换为十六进制字符数组
- 以C++格式将十六进制字符串转换为十进制数
- 将大十六进制数转换为十进制形式(以 10 为基数的形式)的算法
- 如何将十六进制字符串转换为 HTML 实体
- 如何在C++中将十六进制字符转换为二进制
- 在 c++ 中使用字符串流将 4 个字符的十六进制字符串转换为有符号的短字符串
- 从char阵列中提取十六进制数字
- 将 std::十六进制字符串转换为 std::array<T, 6>
- 如何在 c++ 中将十六进制数字转换为字符
- 如何在 c++ 中将十六进制字符串转换为长整型字符串
- 使用字符串格式限制十六进制数字的数量
- 将十六进制数字从无符号字符转换为字符串
- 将十六进制数的 char[] 转换为对应于 ASCII 表中十六进制数字的字母的 char[] 并反转
- 将std::字符串数字转换为十六进制数字
- 将字节转换为两位十六进制数字