Я ищу функцию, позволяющую мне напечатать двоичное представление типа int. То, что я имею до сих пор, это;
char *int2bin(int a)
{
char *str,*tmp;
int cnt = 31;
str = (char *) malloc(33); /*32 + 1 , because its a 32 bit bin number*/
tmp = str;
while ( cnt > -1 ){
str[cnt]= '0';
cnt --;
}
cnt = 31;
while (a > 0){
if (a%2==1){
str[cnt] = '1';
}
cnt--;
a = a/2 ;
}
return tmp;
}
Но когда я звоню
printf("a %s",int2bin(aMask)) // aMask = 0xFF000000
Я получаю вывод как;
0000000000000000000000000000000000xtpYy (и несколько неизвестных символов.
Это недостаток функции или я печатаю адрес массива символов или что-то в этом роде? Извините, я просто не вижу, куда иду не так.
NB Код от здесь
РЕДАКТИРОВАТЬ: Это не домашнее задание К вашему сведению, я пытаюсь отладить чужие процедуры манипулирования изображениями на незнакомом языке. Однако, если это было помечено как домашнее задание, потому что это элементарная концепция, то честная игра.