Is there a printf converter to print in binary format?

前端 未结 30 3327
盖世英雄少女心
盖世英雄少女心 2020-11-21 06:20

I can print with printf as a hex or octal number. Is there a format tag to print as binary, or arbitrary base?

I am running gcc.

printf(\"%d %x %o         


        
30条回答
  •  误落风尘
    2020-11-21 07:02

    Here is a small variation of paniq's solution that uses templates to allow printing of 32 and 64 bit integers:

    template
    inline std::string format_binary(T x)
    {
        char b[sizeof(T)*8+1] = {0};
    
        for (size_t z = 0; z < sizeof(T)*8; z++)
            b[sizeof(T)*8-1-z] = ((x>>z) & 0x1) ? '1' : '0';
    
        return std::string(b);
    }
    

    And can be used like:

    unsigned int value32 = 0x1e127ad;
    printf( "  0x%x: %s\n", value32, format_binary(value32).c_str() );
    
    unsigned long long value64 = 0x2e0b04ce0;
    printf( "0x%llx: %s\n", value64, format_binary(value64).c_str() );
    

    Here is the result:

      0x1e127ad: 00000001111000010010011110101101
    0x2e0b04ce0: 0000000000000000000000000000001011100000101100000100110011100000
    

提交回复
热议问题