0
16 진수를 bin으로 변환하려고합니다. 내가 비트 (0x101)를 호출하면 00011이 인쇄되는데, 이것은 분명히 잘못되었습니다. 임 꽤 for 루프에 있습니다. 어떤 아이디어? 당신이 n
에서 마지막 1
비트를 이동하면C에서 bin으로 16 진수
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;
}
어떻게 해결할 수 있습니까? 그 선을 다른 곳으로 옮기나요? – user1386132
대신'while (n)'을 사용하면 변환 할 각 비트마다 for() 루프를 수행해야합니다. 예 : 'for (int i = 0; i <= sizeof (n); i ++)'또는 유사합니다. C에서 근무한 이후로 오랜 시간이 걸렸습니다. 그래도 작동하지 않을 것이지만 당신을 끌어들일 수있을만큼 충분해야합니다. –
'for (int i = 0; i <= sizeof (n); i ++) { --cp; if (n & 1) * cp = '1'; else * cp = '0'; n >> = i; }'이것은 for for loop입니다. 여전히 옳은 것을 인쇄하지 않습니다. – user1386132