10진수를 n진수로 변환.
int count(char *base)
{
int count;
count = 0;
while (base[count])
count++;
return (count);
}
받은 base의 길이가 몇인지 카운트한다.
base의 길이와 변환할 10진수 값, base를 전달하여 변환하였다.
void rec_base(int n, char *base, int base_size)
{
if (n < base_size)
{
ft_putchar(base[n]);
}
else
{
rec_base(n / base_size, base, base_size);
ft_putchar(base[n % base_size]);
}
}
여러 방식이 있겠지만 나누기를 여러 번 진행하면서 가장 큰 자리 수 부터 출력해야하기때문에 재귀 함수 사용이 가장 간단했다.
n진수를 10진수로 변환
int convert_dec(int result, int num, char *base)
{
int base_num;
base_num = count_base(base);
return (result * base_num + num);
}
한 번에 변환할 수도 있겠지만 내 경우엔 수를 하나씩 받아 십진수로 변환해야했다.. 받을 char의 길이가 정해져있지않아서 배열을 선언할 수도 없었기때문에 위와 같은 함수를 작성했다.
Mathematics makes me think twice even for simple problem. 😬