en esta respuesta , hice una función para convertir un número entero en una cadena ASCII:
void writeInteger(unsigned int input) {
unsigned int start = 1;
unsigned int counter;
while (start <= input)
start *= 10;
for (counter = start / 10; counter >= 1; counter /= 10)
serialWrite(((input / counter) % 10) + 0x30);
}
Probé esta función con un bucle:
unsigned int counter;
for (counter = 0; counter< 1000000; counter++) {
writeInteger(counter);
serialWrite('\r');
serialWrite('\n');
}
Este funciona , para \ $ 1 \ le {} n \ le9999 \ $. Sin embargo, para 10,000 y más, obtengo cadenas extrañas en la terminal:
10000 => 2943
10001 => 2943
10002 => 2944
10003 => 2944
10004 => 2944
10005 => 2945
...
¿Por qué es eso? ¿Cómo puedo solucionarlo?