153 lines
2.3 KiB
C++
153 lines
2.3 KiB
C++
#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);
|
|
} |