Як і в багатьох інших речах у С, існує багато способів очищення цієї кішки.
Всі вони покладаються на вас спочатку, зробивши масив символів для зберігання результату в - ви не можете "повернути" масив з функції.
Найпростіший, хоч і нестандартний спосіб - це використовувати ltoa()
, який є специфічною функцією avr-libc (не є частиною стандартних функцій libc):
long myLong = 12345L;
char myCharArray[10];//Enough room for the answer + 1 NULL char
ltoa(myLong, myCharArray, 10);
10
у цьому виклику функції визначає базу для представлення числа в базі 10 у цьому випадку: decimal.
Іншим способом, який є більш портативним, є форматування рядка за допомогою snprintf()
:
snprintf(myCharArray, 10, "%dl", myLong);
У цьому випадку 10
- це максимальна довжина рядка, щоб запобігти переповненню 10-символьного масиву, який ми зробили.
Чистим способом Arduino було б скористатися страшним String
клас:
String myString = String(myLong);
myString.toCharArray(myString, 10);
Знову ж у цьому прикладі 10
- це довжина буфера, у який ми копіюємо.
І їх більше. Ви можете зробити це вручну, наприклад, за символьними символами за допомогою операторів поділу та модуля.