0
Я пытаюсь преобразовать hex в bin. Если я вызываю биты (0x101), он печатает 00011, что, очевидно, неверно. Я уверен, что он в цикле for. Есть идеи??hex to bin in C
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 прямо сейчас. Все еще не печатайте правильную вещь. – user1386132