Taka mała uwaga, że wcale nie zamieniasz liczby dziesiętnej na ósemkową.
unsigned int
- to jest liczba dwójkowa ponieważ unsigned int składa się wewnętrznie z zer i jedynek, ponieważ tak komputer zapisuje informacje.
Więc twoja funkcja nie robi wcale tego, co ma robić. Albo źle podchodzisz do problemu albo problem jest źle nazwany.
lion137
dec_to_any
biorąc pod uwagę to, co robi ta funkcja, należałoby nazwać ją int_to_any
, tylko, że dalej będzie to kłamstwo.
int dec_to_any(int n,int base){
Czyli funkcja bierze dwójkową liczbę n
i zwraca inną dwójkową liczbę. I tylko przez przypadek działa, ale tylko dla wartości n < 11, bo później ci się cyfry skończą (do szesnastkowego tak nie skonwertujesz).
Tak na logikę, to tego typu funkcja powinna zwracać stringa, a nie inta, ponieważ to co robi to konwertuje jakąś wartość na tekst, który reprezentuje liczbę w danym układzie. Np. tak (kod w JavaScript):
function numberToString(n, base) {
let s = '';
while (n) {
const digit = n % base;
n = (n - digit) / base;
// 65 - czyli kod litery A
s = (digit < 10? digit : String.fromCharCode(65 - 10 + digit)) + s;
}
return s;
}