4

我正在尝试将 bar 中的值复制到整数 foo 中。

这就是我到目前为止所拥有的。当我运行它时,我得到一个不同的十六进制值。任何帮助都会很棒。

int main()
{

    string bar = "0x00EB0C62";

    int foo = (int)bar;

    cout << hex << foo;
    ChangeMemVal("pinball.exe", (void*) foo, "100000", 4);

    return 0;
}

所以输出应该是0x00EB0C62。

4

5 回答 5

2

atoi应该工作:

string bar = "0x00EB0C62";

int foo = atoi(bar.c_str());
于 2009-02-03T17:58:15.707 回答
2

以前的答案。

于 2009-02-03T18:01:57.557 回答
2

Atoi 当然可以,但如果你想用 C++ 的方式来做,那么 stringstreams 是最好的选择。它是这样的,请注意,代码未经测试,可能无法开箱即用,但您应该了解总体思路。

int i = 4;
stringstream ss;
ss << i;
string str = ss.str();
于 2009-02-03T18:05:30.590 回答
1

当您将字符串转换为 int 时,您将获得该字符串的 ascii 值,而不是转换后的字符串值,以正确转换 0x00EB0C62,您必须将其传递给字符串解析器。(一种简单的方法是做 ascii 算术)。

于 2009-02-03T17:58:14.227 回答
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 不正确,我不记得没有参考的十六进制标志的确切位置。

于 2009-02-03T18:02:47.943 回答