0

16進数をビンに変換しようとしています。ビット (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 に答える