int printhex(t_flag *flag, va_list args) { unsigned int nb; int rslt; int size; if (flag->length == 'l') return (printuhex(flag, args)); else { nb = va_arg(args, unsigned int); if (flag->sharp) ft_putstr("0x"); if (flag->minus) { size = ft_puthex(nb, 0, 1); ft_printf_space(flag->width - size, flag->zero); } else { ft_printf_space(flag->width - size, flag->zero); size = ft_puthex(nb, 0, 1); } size += (flag->sharp * 2); rslt = size < flag->width ? flag->width : size; return (rslt); } }
void ft_puthex_64(uint64_t l) { if (l >= 16) { ft_puthex(l / 16); ft_puthex(l % 16); } else ft_putchar(HEX[l]); }
void ft_puthex(unsigned int n, char *mode) { if (n > 15) { ft_puthex(n / 16, mode); ft_puthex(n % 16, mode); } else { if (n <= 9) ft_putchar(n + '0'); else if (!ft_strcmp(mode, "min")) ft_putchar((n - 10) + 'a'); else if (!ft_strcmp(mode, "maj")) ft_putchar((n - 10) + 'A'); } }
void ft_putmem(void *str, int len) { int i; i = 0; while (i < len) { printf("prinf version : %p \n", (char *)str + i); ft_puthex((long int)((char *)str + i)); ft_putstr(":"); while (i < len && (i + 1) % 16 != 0) // print 16 byte info { ft_putstr(" "); ft_puthex(((unsigned char *)str)[i]); i++; } ft_putendl(""); i++; } }
int ft_puthex(unsigned int nb, int i, int lowercase) { int l; i++; if (lowercase) l = 97; else l = 65; if (nb < 16) { if (nb > 9) ft_putchar(nb - 10 + l); else ft_putchar(nb + 48); } else { i = ft_puthex(nb / 16, i, lowercase); ft_puthex(nb % 16, i, lowercase); } return (i); }