Esempio n. 1
0
void			ft_put_line_number(int last)
{
	int		i;
	t_ucc	*convert;
	int		nb_char;
	int		max;

	if (gbl_mode(GET, 0) == HEX)
		max = 7;
	else
		max = 8;
	nb_char = ft_nb_char(0);
	i = 0;
	convert = (t_ucc*)"0123456789abcdef";
	if (has_printed())
		write(1, "\n", 1);
	if (!ft_nb_char(0) && last)
		return ;
	while (i < max)
	{
		write(1, convert + ((nb_char / pow_16((max - 1) - i)) % 16), 1);
		i++;
	}
	if (last)
		write(1, "\n", 1);
}
Esempio n. 2
0
static void		print_num(size_t num_digit,
						uint64_t n,
						char *to_return,
						int is_upcase)
{
	size_t			i;
	size_t			istr;
	unsigned char	digit;

	i = num_digit;
	istr = 0;
	while (i > 0)
	{
		digit = n / pow_16(i - 1);
		n = n % pow_16(i - 1);
		to_return[istr] = get_char(digit, is_upcase);
		++istr;
		--i;
	}
	to_return[num_digit] = '\0';
}
Esempio n. 3
0
void			ft_itoa_hex(uint64_t n, int is_upcase, char *buff)
{
	size_t		num_digit;
	uint64_t	nb;

	num_digit = 1;
	nb = n;
	if (n > 1152921504606846976)
		num_digit = 15;
	else
	{
		while (pow_16(num_digit) <= nb)
			++num_digit;
	}
	print_num(num_digit, nb, buff, is_upcase);
}