2022-01-20 11:34:33 +00:00
|
|
|
#include "convert.h"
|
|
|
|
#include "io.h"
|
|
|
|
|
|
|
|
int stoi(const char* string)
|
|
|
|
{
|
|
|
|
int output = 0;
|
|
|
|
int32_t sign = 1;
|
|
|
|
if(*string == '-')
|
|
|
|
{
|
|
|
|
string++;
|
|
|
|
sign = -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
while(*string >= '0' && *string <= '9')
|
|
|
|
{
|
|
|
|
output *= 10;
|
|
|
|
output += sign * (*string++ - '0');
|
|
|
|
}
|
|
|
|
|
|
|
|
return output;
|
|
|
|
}
|
|
|
|
|
2022-01-20 15:38:03 +00:00
|
|
|
char* ultoa(unsigned long number, char* string, int base)
|
2022-01-20 11:34:33 +00:00
|
|
|
{
|
2022-01-20 15:38:03 +00:00
|
|
|
if(base < 2 || base > 16)
|
|
|
|
{
|
|
|
|
string[0] = '\0';
|
|
|
|
return string;
|
|
|
|
}
|
|
|
|
|
2022-01-20 11:34:33 +00:00
|
|
|
volatile char* temp = (volatile char*)0x40000000;
|
|
|
|
int i = 0;
|
|
|
|
if(number == 0)
|
|
|
|
{
|
|
|
|
temp[i++] = '0';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2022-01-20 15:38:03 +00:00
|
|
|
for(; number > 0; number /= base)
|
2022-01-20 11:34:33 +00:00
|
|
|
{
|
2022-01-20 15:38:03 +00:00
|
|
|
temp[i++] = '0' + (number % base);
|
2022-01-20 11:34:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
temp[i] = '\0';
|
|
|
|
string[i] = '\0';
|
|
|
|
|
|
|
|
while(*temp)
|
|
|
|
{
|
|
|
|
string[--i] = *temp++;
|
|
|
|
}
|
|
|
|
|
|
|
|
return string;
|
2022-01-20 15:38:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
char* ltoa(long number, char* string, int base)
|
|
|
|
{
|
|
|
|
char* old_string = string;
|
|
|
|
if(number < 0)
|
|
|
|
{
|
|
|
|
number *= -1;
|
|
|
|
*string++ = '-';
|
|
|
|
}
|
|
|
|
|
2022-01-20 15:44:42 +00:00
|
|
|
ultoa(number, string, base);
|
2022-01-20 15:38:03 +00:00
|
|
|
return old_string;
|
|
|
|
}
|
|
|
|
|
|
|
|
char* utoa(unsigned int number, char* string, int base)
|
|
|
|
{
|
|
|
|
return ultoa(number, string, base);
|
|
|
|
}
|
|
|
|
|
|
|
|
char* itoa(int number, char* string, int base)
|
|
|
|
{
|
|
|
|
return ltoa(number, string, base);
|
2022-01-20 11:34:33 +00:00
|
|
|
}
|