Есть готовый код перевода из одной системы счисления в другую, но нужно реализовать часть кода(прикреплен) без умножения на 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;
}
→ Ссылка