Преобразование int или строки в массив символов на Arduino
я получаю значение int от одного из аналоговых контактов на моем Arduino. Как мне связать это с String
а затем преобразовать String
до char[]
?
было предложено, чтобы я попробовал char msg[] = myString.getChars();
, но я получаю сообщение, что getChars
не существует.
3 ответа:
преобразовать и добавить целое число, используйте оператор += (или функция-член
concat
):String stringOne = "A long integer: "; stringOne += 123456789;
получить строку типа
char[]
используйте toCharArray():char charBuf[50]; stringOne.toCharArray(charBuf, 50)
в примере есть только пробел для 49 символов (предполагая, что он заканчивается нулем). Вы можете сделать размер динамическим.
Так же, как ссылка, Вот пример того, как конвертировать между
String
иchar[]
с динамической длиной -// Define String str = "This is my string"; // Length (with one extra character for the null terminator) int str_len = str.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; // Copy it over str.toCharArray(char_array, str_len);
Да, это болезненно тупо для чего-то столь же простого, как преобразование типов, но, к сожалению, это самый простой способ.
ничего из этого не сработало. Вот гораздо более простой способ .. метка str-это указатель на то, что является массивом...
String str = String(yourNumber, DEC); // Obviously .. get your int or byte into the string str = str + '\r' + '\n'; // Add the required carriage return, optional line feed byte str_len = str.length(); // Get the length of the whole lot .. C will kindly // place a null at the end of the string which makes // it by default an array[]. // The [0] element is the highest digit... so we // have a separate place counter for the array... byte arrayPointer = 0; while (str_len) { // I was outputting the digits to the TX buffer if ((UCSR0A & (1<<UDRE0))) // Is the TX buffer empty? { UDR0 = str[arrayPointer]; --str_len; ++arrayPointer; } }