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;
}