C语言问题求解答(最好有代码)

img


char* bin2hex(int*a){
    char*numChar=(char*)malloc(sizeof(char)*9);
    int cnt = 0, tmp=0;
    while(cnt<32){
        for(int i=0;i<4;i++){
            tmp = tmp*2 + a[cnt+i]; 
        }
        if(tmp<10){
            numChar[cnt/4] = (char)((int)'0'+tmp);
        }else{
             numChar[cnt/4] = (char)((int)'A'+(tmp)-10);
        }
        cnt+=4;
        tmp=0;
    }
    numChar[8]='\0';
    return numChar;
}
int main(){
    int num[32],cnt=0,time=0;//1个整数32位
    int a = 136;
    char*numChar;
    unsigned tmp = a;
    while(tmp){
        num[31-cnt]=tmp&1;
        tmp>>=1;
        cnt++;
    }
    while(cnt<32){
        num[31-cnt]=0;
        cnt++;
    }
    for(int i=0;i<32;i++){
        if(time>0&&time%4==0)
            printf(" ");
        time++;        
        printf("%d",num[i]);
    }
    printf("\n");
    numChar=bin2hex(num);
    printf("%s\n",numChar);
    system("pause");
}