2017-07-27 1 views
0

ich eine hexadezimale Zeichenfolge in eine Dezimalzahl (integer) in C++ und versuchte, mit folgenden Möglichkeiten umwandeln möchten:konvertieren Hexadezimalstring Zahl in C++ Dezimal

std::wstringstream SS; 
SS << std::dec << stol(L"0xBAD") << endl; 

Aber es kehrte 0 statt 2989.

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

Aber es kehrte -425771592 statt 2989.

Aber wenn ich es wie unten verwende, funktioniert es gut und gibt 2989 wie erwartet.

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

Aber ich möchte eine Zeichenfolge eingeben und 2989 als Ausgabe erhalten, statt Integer-Eingang wie 0xBAD. Zum Beispiel möchte ich "0xBAD" eingeben und es in Ganzzahl umwandeln und dann in eine Dezimalzahl umwandeln.

Vielen Dank im Voraus.

+2

Also, was ist die Frage? Du hast einen funktionierenden Weg. – NathanOliver

+0

@NathanOliver Ich aktualisierte es richtig. – GTAVLover

+1

Mögliche Duplikate: https://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer –

Antwort

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

Danke! Es funktionierte! :-) Ich habe viele Male darüber gegoogelt und nichts gefunden, aufgrund der Art, wie ich gesucht habe. Aber ich konnte [diesen] (https://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer) Beitrag nicht finden. – GTAVLover