我正在尝试将十六进制转换为bin。如果我调用位(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;
}
答案 0 :(得分:2)
将1
的最后一位移出n
后,它就会变为零,即使剩下的位还要处理,你的循环也会中止。
并帮自己一个忙...正确地缩进你的代码。它的格式正确,因此更容易阅读/调试。