93 lines
1.9 KiB
C
93 lines
1.9 KiB
C
#ifndef TYPES_H
|
|
#define TYPES_H
|
|
|
|
#include <stdint.h>
|
|
|
|
static char* __itoa(int value, char* buffer, int base) {
|
|
char* ptr = buffer, *ptr1 = buffer, tmp_char;
|
|
int tmp_value;
|
|
|
|
if (value < 0 && base == 10) {
|
|
value = -value;
|
|
*ptr++ = '-';
|
|
ptr1++;
|
|
}
|
|
|
|
do {
|
|
tmp_value = value;
|
|
value /= base;
|
|
*ptr++ = "0123456789ABCDEF"[tmp_value - value * base];
|
|
} while (value);
|
|
|
|
*ptr-- = '\0';
|
|
|
|
while (ptr1 < ptr) {
|
|
tmp_char = *ptr;
|
|
*ptr-- = *ptr1;
|
|
*ptr1++ = tmp_char;
|
|
}
|
|
|
|
return buffer;
|
|
}
|
|
|
|
static char* __utoa(unsigned int value, char* buffer, int base) {
|
|
char* ptr = buffer, *ptr1 = buffer, tmp_char;
|
|
unsigned int tmp_value;
|
|
|
|
do {
|
|
tmp_value = value;
|
|
value /= base;
|
|
*ptr++ = "0123456789ABCDEF"[tmp_value - value * base];
|
|
} while (value);
|
|
|
|
*ptr-- = '\0';
|
|
|
|
while (ptr1 < ptr) {
|
|
tmp_char = *ptr;
|
|
*ptr-- = *ptr1;
|
|
*ptr1++ = tmp_char;
|
|
}
|
|
|
|
return buffer;
|
|
}
|
|
|
|
static char* __ftoa(double value, char* buffer) {
|
|
int int_part = (int)value;
|
|
double frac_part = value - (double)int_part;
|
|
char* ptr = __itoa(int_part, buffer, 10);
|
|
|
|
*ptr++ = '.';
|
|
|
|
for (int i = 0; i < 6; i++) {
|
|
frac_part *= 10.0;
|
|
int digit = (int)frac_part;
|
|
*ptr++ = '0' + digit;
|
|
frac_part -= (double)digit;
|
|
}
|
|
|
|
*ptr = '\0';
|
|
return buffer;
|
|
}
|
|
|
|
static char* itoa(int value, char* buffer) {
|
|
return __itoa(value, buffer, 10);
|
|
}
|
|
|
|
static char* utoa(unsigned int value, char* buffer) {
|
|
return __utoa(value, buffer, 10);
|
|
}
|
|
|
|
static char* otoa(unsigned int value, char* buffer) {
|
|
return __utoa(value, buffer, 8);
|
|
}
|
|
|
|
static char* xtoa(unsigned int value, char* buffer) {
|
|
return __utoa(value, buffer, 16);
|
|
}
|
|
|
|
static char* ftoa(double value, char* buffer) {
|
|
return __ftoa(value, buffer);
|
|
}
|
|
|
|
#endif // TYPES_H
|