例如,0x19是二进制的00011001。我尝试使用printf%08x,但这给了我00000019作为输出。如何让它打印00011001呢?
答案 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;
}