Drucken Sie ein int in binärer Darstellung mit C

Ich bin auf der Suche nach einer Funktion, mir zu erlauben, drucken Sie die binäre Darstellung eines int. Was ich habe, so weit ist;

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;

}

Aber wenn ich Anrufe,

printf("a %s",int2bin(aMask)) //aMask = 0xFF000000

Bekomme ich eine Ausgabe wie;

0000000000000000000000000000000000xtpyy (Und ein paar unbekannte Zeichen.

Ist es ein Fehler in der Funktion oder bin ich Druck die Adresse des Zeichen-array, oder was? Sorry, ich kann einfach nicht sehen, wohin ich gehe falsch.

NB code ist aus hier

EDIT: Es ist keine Hausaufgabe zur info, ich bin versucht zu Debuggen jemand anderes image manipulation Routinen in einer unbekannten Sprache. Wenn jedoch es wurde getaggt als Hausaufgabe, weil es ein elementares Konzept dann fair play.

InformationsquelleAutor der Frage gav | 2009-06-21

Schreibe einen Kommentar