diff --git a/src/main/common/typeconversion.c b/src/main/common/typeconversion.c index 469d0b725a..98a2ac8816 100644 --- a/src/main/common/typeconversion.c +++ b/src/main/common/typeconversion.c @@ -24,18 +24,18 @@ void uli2a(unsigned long int num, unsigned int base, int uc, char *bf) { - int n = 0; unsigned int d = 1; + while (num / d >= base) d *= base; + while (d != 0) { int dgt = num / d; + *bf++ = dgt + (dgt < 10 ? '0' : (uc ? 'A' : 'a') - 10); + + // Next digit num %= d; d /= base; - if (n || dgt > 0 || d == 0) { - *bf++ = dgt + (dgt < 10 ? '0' : (uc ? 'A' : 'a') - 10); - ++n; - } } *bf = 0; } @@ -53,18 +53,18 @@ void li2a(long num, char *bf) void ui2a(unsigned int num, unsigned int base, int uc, char *bf) { - int n = 0; unsigned int d = 1; + while (num / d >= base) d *= base; + while (d != 0) { int dgt = num / d; + *bf++ = dgt + (dgt < 10 ? '0' : (uc ? 'A' : 'a') - 10); + + // Next digit num %= d; d /= base; - if (n || dgt > 0 || d == 0) { - *bf++ = dgt + (dgt < 10 ? '0' : (uc ? 'A' : 'a') - 10); - ++n; - } } *bf = 0; }