2017-07-27 2 views
0

に10進数に16進数の文字列に変換します。は、私はC++の10進数(整数)に16進数の文字列を変換すると、次の方法で試してみましたC++

std::wstringstream SS; 
SS << std::dec << reinterpret_cast<LONG>(L"0xBAD") << endl; 

しかし、それは2989代わり-425771592を返しました。

しかし、以下のように使用すると、正常に動作し、2989が期待通りになります。

std::wstringstream SS; 
SS << std::dec << 0xBAD << endl; 

は、しかし、私は、入力文字列にしたいと出力として29890xBADなどの代わりに、整数入力を取得します。たとえば、"0xBAD"を入力して整数にキャストし、10進数に変換したいとします。

ありがとうございます。

+2

質問は何ですか?あなたは働く方法を持っています。 – NathanOliver

+0

@ NathanOliver正しく更新しました。 – GTAVLover

+1

可能な複製:https://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer –

答えて

2
// stol example 
#include <iostream> // std::cout 
#include <string>  // std::string, std::stol 

int main() 
{ 
    std::string str_dec = "1987520"; 
    std::string str_hex = "2f04e009"; 
    std::string str_bin = "-11101001100100111010"; 
    std::string str_auto = "0x7fffff"; 

    std::string::size_type sz; // alias of size_t 

    long li_dec = std::stol (str_dec,&sz); 
    long li_hex = std::stol (str_hex,nullptr,16); 
    long li_bin = std::stol (str_bin,nullptr,2); 
    long li_auto = std::stol (str_auto,nullptr,0); 

    std::cout << str_dec << ": " << li_dec << '\n'; 
    std::cout << str_hex << ": " << li_hex << '\n'; 
    std::cout << str_bin << ": " << li_bin << '\n'; 
    std::cout << str_auto << ": " << li_auto << '\n'; 

    return 0; 
} 
+0

ありがとうございました!出来た! :-)私はこれについて何度もグーグルで探検したので、何も見つかりませんでした。しかし、私は[this](https://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer)の投稿を見つけることができませんでした。 – GTAVLover

関連する問題