My Project
Loading...
Searching...
No Matches
az_itoa.c
Go to the documentation of this file.
1// kernel_lib_printf_functions
2/*
3 * Kernel Lib Printf Functions
4 *
5 * Maintainer: Park Jiwoo
6 *
7 * Copyright (C) 2024 Park-Jiwoo
8 *
9 */
10#include "kernel_pr_he.h"
11
12static int az_pow(int nb, int pow)
13{
14 if (pow == 0)
15 return (1);
16 else
17 return (nb * az_pow(nb, pow - 1));
18}
19
20char *az_itoa(int value, int base)
21{
22 int i;
23 char *nbr;
24 int neg;
25
26 // 10진수
27 // base = 10..
28
29 i = 1;
30 neg = 0;
31 if (value < 0)
32 {
33 if (base == 10)
34 neg = 1;
35 value *= -1;
36 }
37
38 while (az_pow(base, i) - 1 < value)
39 i++;
40
41 nbr = (char *)malloc(sizeof(nbr) * i);
42
43 nbr[i + neg] = '\0';
44
45 while (i-- > 0)
46 {
47 nbr[i + neg] = (value % base) + (value % base > 9 ? 'A' - 10 : '0');
48 value = value / base;
49 }
50 if (neg)
51 nbr[0] = '-';
52
53 return (nbr);
54}
char * az_itoa(int value, int base)
Definition az_itoa.c:20