Есть готовый код перевода из одной системы счисления в другую, но нужно реализовать часть кода(прикреплен) без умножения на 10
int decimalToBase(int n) {
int rslt = 0;
int digitPos = 1;
while (n) {
rslt += (n % 8) * digitPos;
n /= 8;
digitPos *= 10;
}
return rslt;
}
Ответы (1 шт):
Автор решения: Антон
→ Ссылка
Можно как-то так
#include <stdio.h>
#include <inttypes.h>
char *dectobase(uint64_t i, int base) {
static char res[64+1];
int pos = 63;
for (uint64_t k = i; k != 0; k = k / base, pos--)
res[pos] = "0123456789ABCDEF"[k % base];
return &res[pos+1];
}
int main(void) {
printf("%s\n",dectobase(0xFEED, 2));
printf("%s\n",dectobase(0xFEED, 16));
printf("%s\n",dectobase(177355, 8));
printf("%s\n",dectobase(0157255, 16));
return 0;
}