我正在尝试将十六进制转换为 bin。如果我调用 bits(0x101) 它会打印 00011,这显然是错误的。我很确定它在 for 循环中。有任何想法吗??
int hextobin (int n){
char buffer[33];
if(n==0) {
putchar('0');
return 0;
}
char *cp = buffer + 32;
*cp = 0;
for(int i =0;i <=sizeof(n); i++){
--cp;
if(n & 1) *cp = '1';
else *cp = '0';
n >>= i;
}
printf(cp);
return 0;
}