int ft_putnbr_base_fd(unsigned long long int n, unsigned int base, unsigned int pad, int fd) { unsigned long long int nb; size_t i; int ret; nb = n; i = 1; ret = EXIT_SUCCESS; while ((nb /= base)) ++i; while (pad > 0 && pad > i) { ret = ft_putchar_fd(0 + '0', fd) == EXIT_SUCCESS ? ret : EXIT_FAILURE; --pad; } if (n / base) ret = ft_putnbr_base_fd(n / base, base, 0, fd) == EXIT_SUCCESS ? ret : EXIT_FAILURE; ret = ft_putchar_fd(g_itob[n % base], fd) == EXIT_SUCCESS ? ret : EXIT_FAILURE; return (ret); }
void print_nbrbase(int nb, int base, int fildes, enum e_priority p) { if (is_fildes_valid(fildes)) return ; if (p == e_always || (p == e_debug && DEBUG)) ft_putnbr_base_fd(nb, base, 0, fildes); return ; }
void ft_putnbr_base_fd(int n, size_t base, int fd) { if (n < 0) { ft_putchar('-'); n *= -1; } if ((size_t)n >= base) { ft_putnbr_base_fd(n / base, base, fd); ft_putnbr_base_fd(n % base, base, fd); } else { if (n < 10) ft_putchar_fd(n + '0', fd); else ft_putchar_fd(n - 10 + 'A', fd); } }
void print_nbrbase10(int nb, int fildes, enum e_priority p) { if (p == e_always || (p == e_debug && DEBUG)) { if (DEBUG) { fprintf(fildes == STDOUT_FILENO ? stdout : stderr, "%d", nb); } else ft_putnbr_base_fd(nb, 10, 0, fildes); } return ; }
void ft_putnbr_base_fd(long n, int base, int fd) { unsigned long value; if (n < 0) { ft_putchar_fd('-', fd); value = n * -1; } else value = n; if (value >= (unsigned long)base) { ft_putnbr_base_fd(value / base, base, fd); ft_putnbr_base_fd(value % base, base, fd); } else { if (value <= 9) ft_putchar_fd('0' + value, fd); else ft_putchar_fd('a' + value - 10, fd); } }
void ft_putmem_fd(void *adr, size_t fd) { write(fd, "0x", 2); ft_putnbr_base_fd((size_t)adr, 16, fd); }
void ft_putnbr_base(int nb, char *base) { ft_putnbr_base_fd(nb, base, 1); }
void ft_putnbr_base(unsigned long n, unsigned int base) { ft_putnbr_base_fd(n, base, 1); }
int ft_putnbr_base(unsigned long long int n, unsigned int base, unsigned int pad) { return (ft_putnbr_base_fd(n, base, pad, STDOUT_FILENO)); }
void ft_putnbr_base_fd(unsigned long n, unsigned int base, int fd) { if (n >= base) ft_putnbr_base_fd(n / base, base, fd); ft_putchar_fd((n % base >= 10) ? n % base - 10 + 'A' : n % base + '0', fd); }
void ft_putnbr_base(int n, int base) { ft_putnbr_base_fd(n, base, 1); }