...
This commit is contained in:
@@ -83,55 +83,25 @@ void itoa64(i64 value, char *buffer) {
|
||||
}
|
||||
|
||||
void uitoa64(u64 value, char *buffer) {
|
||||
char *p = buffer;
|
||||
char tmp[20];
|
||||
int i = 0;
|
||||
|
||||
if (value == 0) {
|
||||
*p++ = '0';
|
||||
*p = '\0';
|
||||
buffer[0] = '0';
|
||||
buffer[1] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
static const u64 powers[] = {
|
||||
10000000000000000000ULL,
|
||||
1000000000000000000ULL,
|
||||
100000000000000000ULL,
|
||||
10000000000000000ULL,
|
||||
1000000000000000ULL,
|
||||
100000000000000ULL,
|
||||
10000000000000ULL,
|
||||
1000000000000ULL,
|
||||
100000000000ULL,
|
||||
10000000000ULL,
|
||||
1000000000ULL,
|
||||
100000000ULL,
|
||||
10000000ULL,
|
||||
1000000ULL,
|
||||
100000ULL,
|
||||
10000ULL,
|
||||
1000ULL,
|
||||
100ULL,
|
||||
10ULL,
|
||||
1ULL
|
||||
};
|
||||
|
||||
bool started = false;
|
||||
|
||||
for (int i = 0; i < 20; i++) {
|
||||
u64 power = powers[i];
|
||||
u32 digit = 0;
|
||||
|
||||
while (value >= power) {
|
||||
value -= power;
|
||||
digit++;
|
||||
}
|
||||
|
||||
if (digit || started) {
|
||||
*p++ = '0' + digit;
|
||||
started = true;
|
||||
}
|
||||
while (value > 0) {
|
||||
tmp[i++] = '0' + (value % 10);
|
||||
value /= 10;
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
for (int j = 0; j < i; j++) {
|
||||
buffer[j] = tmp[i - j - 1];
|
||||
}
|
||||
|
||||
buffer[i] = '\0';
|
||||
}
|
||||
|
||||
void uitoa64_hex(u64 value, char *buffer) {
|
||||
|
||||
Reference in New Issue
Block a user