4

barの値を整数fooにコピーしようとしています。

これは私がこれまでに持っているものです。それを実行すると、異なる16進値を取得します。どんな助けでも素晴らしいでしょう。

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

以前のSOの回答。

于 2009-02-03T18:01:57.557 に答える
2

Atoi は確かに機能しますが、C++ の方法で実行したい場合は、文字列ストリームが適しています。コードはテストされておらず、そのままでは機能しない可能性がありますが、一般的な考え方は理解できるはずです。

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

文字列をintとしてキャストすると、変換された文字列値ではなく、その文字列のASCII値を取得して、0x00EB0C62を適切に変換するには、文字列パーサーに渡す必要があります。(簡単な方法の1つは、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 が正しくない場合は申し訳ありませんが、16 進フラグの正確な場所を参照なしでは思い出せません。

于 2009-02-03T18:02:47.943 に答える