Search code examples
c++hexintunsignedstringstream

convert hex buffer to unsigned int


I've been trying to convert a hexadecimal number saved in a buffer to an unsigned int. However the "0x00" in front of every hexadecimal number that I'm reading from has been giving me problem, in essence the problem (in a downscaled version) looks like this:

char b[] = "0x0014A12";
std::stringstream ss;
unsigned int i;
ss << std::hex << b;
ss >> i;
cout << i << endl;

Any tips?

Note: The program outputs a high decimal nubmer which equals CCCCCC in hex.


Solution

  • This works fine for me:

    #include <iostream>
    #include <sstream>
    
    int main(int argc, char* argv[])
    {
        using namespace std;
    
        string b("0x0014A12");
    
        stringstream ss;
        ss << hex << b;
    
        unsigned int dec;
        ss >> dec;
    
        cout << b << " = " << dec << endl;
        return 0;
    }
    

    output:

    0x0014A12 = 84498