我正在尝试将bar中的值复制到整数foo中。
这是我到目前为止所拥有的。当我运行它时,我得到一个不同的十六进制值。任何帮助都会很棒。
int main()
{
string bar = "0x00EB0C62";
int foo = (int)bar;
cout << hex << foo;
ChangeMemVal("pinball.exe", (void*) foo, "100000", 4);
return 0;
}
因此输出应为0x00EB0C62。
答案 0 :(得分:2)
atoi应该有效:
string bar = "0x00EB0C62";
int foo = atoi(bar.c_str());
答案 1 :(得分:2)
答案 2 :(得分:2)
Atoi当然有效,但如果你想用C ++方式做,那么串流就是最佳选择。它是这样的,注意,代码没有经过测试,可能不会开箱即用,但你应该得到一般的想法。
int i = 4;
stringstream ss;
ss << i;
string str = ss.str();
答案 3 :(得分:1)
当您将字符串转换为int时,您将获得该字符串的ascii值,而不是转换后的字符串值,以正确转换0x00EB0C62,您必须通过字符串解析器传递它。 (一种简单的方法是做ascii算术)。
答案 4 :(得分:1)
这就是字符串流的用途,你想做这样的事情。
#include< sstream>
#include< string>
#include< iostream>
int main()
{
std::string bar="0x00EB0C62";
int foo=0;
std::istringstream to_int;
to_int.str(bar);
to_int>>foo;
std::cout<<std::ios_base::hex<<foo<<std::endl;;
.
etc.
.
return EXIT_SUCCESS;
}
这应该可以解决问题。很抱歉,如果我的ios_base不正确,我就不记得没有引用的十六进制标志的确切位置。