void ft_ech_expr(const char *str) { char argatoi[4]; *(3 + argatoi) = 0; if ((*str == 'x' || ft_isdigit(*str)) && ft_ishex(*(1 + str)) && ft_ishex(*(2 + str))) { *(argatoi) = (*str == 'x') ? '0' : *str; *(1 + argatoi) = *(1 + str); *(2 + argatoi) = *(2 + str); if (*str == 'x') (void) ft_putchar(ft_evalhex(argatoi)); else (void) ft_putchar(ft_atoi(argatoi)); } else { (void) ft_putchar('\\'); (void) ft_putchar(*(str)); (void) ft_putchar(*(1 + str)); (void) ft_putchar(*(2 + str)); } return ; }
int ft_atoi_base(const char *str, int base) { int signe; int re; int i; int num; int p; i = 0; p = ft_strlen(str) - 1; re = 0; signe = 1; ft_prep(str, &i, &signe); while (str[i] != '\0' && (num = ft_ishex(str[i])) != -1) { re = re + (ft_power(base, p) * num); i++; p--; } if (num == -1) return (-1); return (re * signe); }
static int htoi(char *hex, int l) { if (*hex == 0) return (l); return (htoi(hex + 1, l * 16 + ft_ishex(*hex))); }