Преобразование int или строки в массив символов на Arduino

я получаю значение int от одного из аналоговых контактов на моем Arduino. Как мне связать это с A String а затем преобразовать String до char[]?

было предложено попробовать char msg[] = myString.getChars();, но я получаю сообщение, что getChars не существует.

3 ответов


  1. преобразовать и добавить целое число, используйте оператор += (или функция-член concat):

    String stringOne = "A long integer: ";
    stringOne += 123456789;
    
  2. получить строку типа char[] используйте toCharArray():

    char charBuf[50];
    stringOne.toCharArray(charBuf, 50) 
    

в примере есть только пространство для 49 символов (при условии, что оно завершается null). Вы можете сделать размер динамическим.


просто в качестве ссылки, вот пример того, как конвертировать между 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;
    }
}