Search code examples
c++hexstdnumber-formatting

How to plus hex( No output)?


My code:

#include <iostream>

using namespace std;
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    cout << c;
}

Now

c = 11

I want to this:

c = 000B

How can I do ?


Solution

  • What I understand is that you want to retrieve the result in an hexadecimal specific format XXXX.

    Computing the addition is the same as any number base, you only need to use (here I display) the result in your format.

    You can do this, for instance:

    #include <iostream>
    #include <iomanip>
    
    
    std::string displayInPersonalizedHexa(unsigned int a)
    {
        std::stringstream ss;
        ss << std::uppercase<<  std::setfill('0') << std::setw(4) << std::hex<< a;
        std::string x;
        ss >>x;
        //std::cout << x;
        return x;
    }
    int main() {
        unsigned int  a = 0x0009, b = 0x0002;
        unsigned int  c = a + b;
        // displays 000B
        std::cout << displayInPersonalizedHexa(c) << std::endl;
    
        // adds c=c+1
        c=c+1;
        // displays 000C
        std::cout << displayInPersonalizedHexa(c) <<  std::endl;
        
       //0xC+5 = 0x11
        c=c+5;
        // displays 0011
        std::cout << displayInPersonalizedHexa(c) <<  std::endl;
    }
    
    

    This will output

    000B
    000C
    0011