Verketten Sie Ganzzahlen als Zeichenfolge [Duplikat]

Diese Frage hat hier bereits Antworten :

Kommentare

  • Da Sie nur 1 s und 0 s können Sie es auch in eine dreistellige Zahl konvertieren und diese Serial.write(out1*100 + out2*10 + out3);
  • ausdrucken

  • @Gerben: Sie meinen Serial.println().
  • Korrektur: Serial.println(out1*100 + out2*10 + out3); (danke @EdgarBonet)

Antwort

Wenn Sie nur auf seriell ausgeben, müssen Sie nicht verketten – drucken Sie einfach jedes Bit separat aus. Beispiel:

Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3); 

Sie sollten die Verwendung von String vermeiden, da dies auf Geräten mit wenig Speicher wie Arduinos nicht gut ist. Inst Wenn Sie wirklich Zahlen verketten müssen, sollten Sie eine C-Zeichenfolge und möglicherweise snprintf verwenden, um die Zahlen darin zu formatieren:

char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3); 

Antwort

Ich bin der Meinung, dass Majenko nur die Bits nach Möglichkeit separat druckt und String Objekte.

Wenn Sie jedoch eine solche Zeichenfolge erstellen müssen (kein Zeichenfolgenobjekt, sondern nur eine einfache C-Zeichenfolge), benötigen Sie sprintf(), was eine ziemlich große Funktion ist: Sie können die Zeichenfolge zeichenweise erstellen. Beispiel:

 char out[4]; // 3 + 1 char for the termination character out[0] = out1==HIGH ? "1" : "0"; out[1] = out2==HIGH ? "1" : "0"; out[2] = out3==HIGH ? "1" : "0"; out[3] = "\0"; // add NUL termination Serial.println(out);  

Hierbei wird die ternärer Operator , was hier bedeutet: „Wenn out1 HIGH ist, verwenden Sie das Zeichen "1", andernfalls verwenden Sie "0" „.

Nun kommt es nur vor, dass in Arduino HIGH bedeutet 1 und LOW bedeutet 0. Einstellige Zahlen können in Zeichen umgewandelt werden, indem nur der numerische Code des Zeichens „0“ hinzugefügt wird, der 48 ist, aber als "0" in C ++. So können Sie schreiben:

 out[0] = out1 + "0"; // convert number to character  

Und Sie können alles zusammenfügen als:

 char out[4]; // 3 + 1 char for the termination character out[0] = digitalRead(r1) + "0"; out[1] = digitalRead(r2) + "0"; out[2] = digitalRead(r3) + "0"; out[3] = "\0"; // add NUL termination Serial.println(out);  

Antwort

Serial.write (b) druckt ein Byte, keine Zeichenfolge. Verwenden Sie print (), um Zeichenfolgen und Zahlen zu drucken.

Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3)); 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.