Is there a printf converter to print in binary format?

前端 未结 30 2750
盖世英雄少女心
盖世英雄少女心 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 06:52

    You could use a small table to improve speed1. Similar techniques are useful in the embedded world, for example, to invert a byte:

    const char *bit_rep[16] = {
        [ 0] = "0000", [ 1] = "0001", [ 2] = "0010", [ 3] = "0011",
        [ 4] = "0100", [ 5] = "0101", [ 6] = "0110", [ 7] = "0111",
        [ 8] = "1000", [ 9] = "1001", [10] = "1010", [11] = "1011",
        [12] = "1100", [13] = "1101", [14] = "1110", [15] = "1111",
    };
    
    void print_byte(uint8_t byte)
    {
        printf("%s%s", bit_rep[byte >> 4], bit_rep[byte & 0x0F]);
    }
    

    1 I'm mostly referring to embedded applications where optimizers are not so aggressive and the speed difference is visible.

提交回复
热议问题