#include "std/stdlib.h" #include "thread/Scheduler.h" static void strrev(char* arr, int start, int end) { char temp; if (start >= end) return; temp = *(arr + start); *(arr + start) = *(arr + end); *(arr + end) = temp; start++; end--; strrev(arr, start, end); } char* itoa(int32_t number, char* arr, int base) { int i = 0, r, negative = 0; if (number == 0) { arr[i] = '0'; arr[i + 1] = '\0'; return arr; } if (number < 0 && base == 10) { number *= -1; negative = 1; } while (number != 0) { r = number % base; arr[i] = (char)((r > 9) ? (r - 10) + 'a' : r + '0'); i++; number /= base; } if (negative) { arr[i] = '-'; i++; } strrev(arr, 0, i - 1); arr[i] = '\0'; return arr; } char* ltoa(int64_t number, char* arr, int base) { int i = 0, negative = 0; int64_t r; if (number == 0) { arr[i] = '0'; arr[i + 1] = '\0'; return arr; } if (number < 0 && base == 10) { number *= -1; negative = 1; } while (number != 0) { r = number % base; arr[i] = (char)((r > 9) ? (r - 10) + 'a' : r + '0'); i++; number /= base; } if (negative) { arr[i] = '-'; i++; } strrev(arr, 0, i - 1); arr[i] = '\0'; return arr; } char* utoa(uint32_t number, char* arr, int base) { int i = 0; uint32_t r; if (number == 0) { arr[i] = '0'; arr[i + 1] = '\0'; return arr; } while (number != 0) { r = number % base; arr[i] = (char)((r > 9) ? (r - 10) + 'a' : r + '0'); i++; number /= base; } strrev(arr, 0, i - 1); arr[i] = '\0'; return arr; } char* ultoa(uint64_t number, char* arr, int base) { int i = 0; uint64_t r; if (number == 0) { arr[i] = '0'; arr[i + 1] = '\0'; return arr; } while (number != 0) { r = number % base; arr[i] = (char)((r > 9) ? (r - 10) + 'a' : r + '0'); i++; number /= base; } strrev(arr, 0, i - 1); arr[i] = '\0'; return arr; } void sleep(uint64_t ms) { Scheduler::sleep(ms); }