如何打印十六进制的二进制文件?

时间:2015-04-01 16:50:28

标签: c

例如,0x19是二进制的00011001。我尝试使用printf%08x,但这给了我00000019作为输出。如何让它打印00011001呢?

2 个答案:

答案 0 :(得分:2)

for (i=0; i<32; i++) putchar((x&(1<<(31-i)))?'1':'0');

答案 1 :(得分:0)

如果itoa(非标准功能)可以使用环境,可以写成如下。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>

int main( void ){
    char bits[CHAR_BIT*sizeof(unsigned)+1];
    itoa((int)0x19, bits, 2);
    int len = strlen(bits);
    if(len < 8)//%08
        printf("%0*d%s\n", 8-len, 0, bits);
    else
        printf("%s\n", bits);
    return 0;
}