Datentyp byte

Hallo,

ich wollte in einem Programm sparsam mit dem Speicher umgehen, also habe ich für eine kleine Zahl den Datentyp byte statt integer genommen.

Um das ganze zu kontrollieren, habe ich die Zahl über die serielle Schnittstelle ausgeben lassen. Dabei musste ich feststellen, dass dies nicht geht:

Seriell.println(i);

dies aber schon:

Seriell.println(i,DEC)

Warum muss ich das bei der Ausgabe machen? Muss ich das auch anderswo noch beachten?

speerwerfer: Hallo,

ich wollte in einem Programm sparsam mit dem Speicher umgehen, also habe ich für eine kleine Zahl den Datentyp byte statt integer genommen.

Um das ganze zu kontrollieren, habe ich die Zahl über die serielle Schnittstelle ausgeben lassen. Dabei musste ich feststellen, dass dies nicht geht:

Seriell.println(i);

dies aber schon:

Seriell.println(i,DEC)

Warum muss ich das bei der Ausgabe machen? Muss ich das auch anderswo noch beachten?

Das DEC sorgt dafür dass die ASCII-Zeichen die dem Text des Wertes entsprechen ausgegeben werden.

Ohne das DEC gibt der Arduino das Byte als solches aus, das heisst wenn das Byte den Dezimalwert 48 hat, gibt es auch 48 aus. Das zugehörige ASCII-Zeichen für den Wert 48 ist die 0, das sieht man dann im Serial Monitor.

Mit dem DEC gibt der Arduino die Zeichen aus die den Wert als Text repräsentieren, also 2 Bytes mit den Werten 52 und 56. Der Computer wandelt das wieder um in eine Ausgabe wie 48.