2 #include <libc/stdlib.h>
4 char base_char[] = "0123456789abcdefghijklmnopqrstuvwxyz";
7 __uitoa_internal(unsigned int value, char* str, int base, unsigned int* size)
15 str[ptr] = base_char[value % base];
20 for (unsigned int i = 0; i < (ptr >> 1); i++) {
22 str[i] = str[ptr - i - 1];
35 __itoa_internal(int value, char* str, int base, unsigned int* size)
37 if (value < 0 && base == 10) {
38 unsigned int msk = value >> 31;
39 // evil bit level hack for abs()
40 unsigned int _v = (unsigned int)((value + msk) ^ msk);
42 __uitoa_internal(_v, str + 1, base, size);
44 __uitoa_internal(value, str, base, size);
51 itoa(int value, char* str, int base)
53 return __itoa_internal(value, str, base, (void*)0);