printf에는 16진수를 출력하는 서식지정자x,X가 있다.(x는 출력시 소문자, X는 대문자)
이를 똑같이 처리하기 위해 itoh라는 함수를 따로 작성해야했다.
//unit은 서식지정자의 문자-23의 값. 어차피 x,X밖에 들어올 것이 없기 떄문에 거기서
//-23을 해주면 a또는 A가 나오게 된다.
char *ft_itoh(unsigned int n, char unit)
{
int len;
char *c;
len = ft_ulen(n, 16);//16진수로 변환할 숫자의 길이를 얻는 함수. 뒤에 붙는것은
//10진법, 8진법에서도 사용할 수 있도록 몇진법인지를 명시해놓도록 했다.
c = (char *)ft_calloc(len + 1, 1);
if (c == NULL)
return (0);
c[len] = '\0';
len--;
while (len >= 0)
{
if (n % 16 < 10)
c[len] = '0' + n % 16;//0~9
else
c[len] = unit + ((n % 16) - 10);//a~f,A~F
len--;
n /= 16;
}
return (c);
}
잘 나오고 있다