...
This commit is contained in:
@@ -83,55 +83,25 @@ void itoa64(i64 value, char *buffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void uitoa64(u64 value, char *buffer) {
|
void uitoa64(u64 value, char *buffer) {
|
||||||
char *p = buffer;
|
char tmp[20];
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
*p++ = '0';
|
buffer[0] = '0';
|
||||||
*p = '\0';
|
buffer[1] = '\0';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u64 powers[] = {
|
while (value > 0) {
|
||||||
10000000000000000000ULL,
|
tmp[i++] = '0' + (value % 10);
|
||||||
1000000000000000000ULL,
|
value /= 10;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*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) {
|
void uitoa64_hex(u64 value, char *buffer) {
|
||||||
|
|||||||
Reference in New Issue
Block a user