No, por eso tomo el substring, porque no conozco el número de dígitos.
Si, esa es la idea, al concatenar los espacios con los dígitos cadena aumenta y luego se trunca al tamaño deseado, es una simple concatenación no creo que haya que complicarla tanto llevándolo al terreno de matrices dinámicas.
Lo que haces en format_text_int() yo lo haría así
String format_text_int(long value, byte len, String sufix) {
String text = " ";
text = text + String(value);
text = text.substring(text.length() - len)) + sufix;
return text;
}
Obviamente que solo trabaja con enteros pero ¿y si pasas el número como string?
String format_text_int(String value, byte len, String sufix) {
String text = " ";
text = text + value;
text = text.substring(text.length() - len)) + sufix;
return text;
}
y la llamas con, por ejemplo,
float volts = 12.3;
@ format_text_int(String(volts), 10, "V");
long rpm = 12345;
@ format_text_int(String(rpm), 10, "RPM");
@ simboliza la sentencia que uses para imprimir.
sufix no lo has tomado en cuenta y queda excluido del len, no se si realmente es lo que quieres, o sea, solo justificar el número.
Así como está planteado, la salida quedaría
12.3V
12345RPM
Para justificar incluso el sufijo habría que hacer
String format_text_int(String value, byte len, String sufix) {
String text = " ";
text = text + value + sufix;
text = text.substring(text.length() - len));
return text;
}
Y la salida sería
12.3V
12345RPM
Saludos
PD: Así como en arduino sprintf() no trabaja con float tampoco funciona con el modificador * .