0

我正在尝试将十六进制转换为 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;
}
4

1 回答 1

2

一旦您将最后1一位移出n,它就会变成零,并且您的循环中止,即使还有一些位要处理。

帮自己一个忙……正确缩进你的代码。正确格式化后,它更容易阅读/调试。

于 2012-05-10T04:34:11.157 回答