Arduino memset() Funktion
In diesem Tutorial wird erläutert, wie die Bytes eines Werts mithilfe der Funktion memset()
in Arduino auf das Ziel gesetzt werden.
die memset()
-Funktion in Arduino
Die Funktion memset()
setzt die Bytes eines Wertes auf das Ziel in Arduino. Die Funktion nimmt eine bestimmte Anzahl von Bytes von einem gegebenen Wert und speichert sie im Ziel.
Syntax:
memset(destination, value, N_bytes);
In der obigen Syntax nimmt die Funktion memset()
die ersten N_bytes
des angegebenen Werts und speichert sie im Ziel
. Wenn der Wert Integer oder ein anderer Datentyp ist, wird er in den Byte-Datentyp konvertiert.
Wir erstellen ein Array aus ganzen Zahlen und ändern seine Werte mit der Funktion memset()
.
Code:
int ch1[4] = {1, 2, 3, 4};
void setup() {
Serial.begin(9600);
memset(ch1, 2, 4 * sizeof(ch1[1]));
for (int i = 0; i < 4; i++) {
Serial.println(ch1[i]);
}
}
void loop() {}
Ausgabe:
514
514
514
514
Wir haben ein Array von Ganzzahlen definiert und die Funktion memset()
verwendet, um alle vier Elemente durch die Bytes der Ganzzahl 2
zu ersetzen. Wir haben eine Schleife verwendet, um die Werte des Arrays im seriellen Monitorfenster von Arduino IDE zu drucken.
Wir können die Byte-Werte auch mit der Funktion int()
in eine ganze Zahl umwandeln. Wir müssen jeden Array-Wert in einer Byte-Variablen speichern und ihn dann an die Funktion int()
übergeben, um ihn in eine Ganzzahl umzuwandeln.
Konvertieren wir den obigen Array-Wert in eine ganze Zahl.
Code:
int ch1[4] = {1, 2, 3, 4};
void setup() {
Serial.begin(9600);
memset(ch1, 2, 4 * sizeof(ch1[1]));
for (int i = 0; i < 4; i++) {
byte b = ch1[i];
int c = int(b);
Serial.println(c);
}
}
void loop() {}
Ausgabe:
2
2
2
2
Der Bytewert wurde in Ganzzahlen konvertiert, sie werden jedoch nicht im ursprünglichen Array gespeichert. Wir können die gleiche Operation auch mit Zeichenketten und Zeichen ausführen, indem wir die Funktion memset()
verwenden.
Wir können ein Array von Zeichen definieren und sie mit der Funktion memset()
durch ein anderes Zeichen ersetzen.
Nachdem wir die Funktion memset()
verwendet haben, erhalten wir ein Array, das den Bytewert der Zeichen enthält, aber wir können den Wert mit der Funktion char()
wieder in ein Zeichen umwandeln.
Wir müssen jeden Byte-Wert in einer Byte-Variablen speichern und ihn dann an die Funktion char()
übergeben, um ihn in ein Zeichen umzuwandeln. Lassen Sie uns ein Array von Ganzzahlen definieren, Zeichenwerte speichern und sie dann durch andere ersetzen.
Code:
int ch1[4] = {'a', 'b', 'c', 'd'};
void setup() {
Serial.begin(9600);
memset(ch1, '.', 4 * sizeof(ch1[1]));
for (int i = 0; i < 4; i++) {
byte b = ch1[i];
char c = char(b);
Serial.println(c);
}
}
void loop() {}
Ausgabe:
.
.
.
.
Im dritten Argument definiert die Ganzzahl, die wir multiplizieren, die Anzahl der Werte, die wir innerhalb des Arrays ersetzen möchten. Wenn wir nicht alle Werte ersetzen wollen und nur einige Werte des Arrays ersetzen wollen, müssen wir eine Ganzzahl im ersten Argument der Funktion memset()
hinzufügen.
Angenommen, wir möchten nur den zweiten und dritten Wert des angegebenen Arrays ersetzen. Wir müssen im ersten Argument 1
hinzufügen und im dritten Argument mit 2
multiplizieren.
Code:
int ch1[4] = {'a', 'b', 'c', 'd'};
void setup() {
Serial.begin(9600);
memset(ch1 + 1, '.', 2 * sizeof(ch1[1]));
for (int i = 0; i < 4; i++) {
byte b = ch1[i];
char c = char(b);
Serial.println(c);
}
}
void loop() {}
Ausgabe:
a
.
.
d
Nur die mittleren Elemente des Arrays werden ersetzt. Wir können Werte auch mithilfe einer Schleife in einem Array speichern.
Lassen Sie uns im folgenden Beispiel die obige Operation mit einer Schleife in Arduino ausführen.
Code:
char ch1[4] = {'a', 'b', 'c', 'd'};
void setup() {
Serial.begin(9600);
for (int i = 1; i < 3; i++) {
ch1[i] = '.';
}
for (int i = 0; i < 4; i++) {
Serial.println(ch1[i]);
}
}
void loop() {}
Ausgabe:
a
.
.
d
Im obigen Code haben wir das Array als Datentyp char
definiert, eine Schleife verwendet, um die Elemente zu ersetzen, und eine weitere Schleife verwendet, um die Array-Elemente auszugeben. Wenn wir int
verwenden, um das angegebene Array zu deklarieren, werden die Zeichen in eine ASCII-Darstellung konvertiert.
Wir müssen eine Schleife verwenden, um die Werte eines Arrays zu drucken, aber wir können es im Fall einer Zeichenfolge ohne Schleife drucken. Wir können die in einer Zeichenfolge vorhandenen Zeichen mithilfe einer Schleife ersetzen.
Wir müssen die Zeichen, die wir ersetzen möchten, anhand ihres Index abrufen und sie dann durch ein anderes Zeichen ersetzen. Lassen Sie uns einen String definieren und einige seiner Zeichen durch andere ersetzen.
Code:
String ch1 = "hello world";
void setup() {
Serial.begin(9600);
for (int i = 1; i < 5; i++) {
ch1[i] = '.';
}
Serial.println(ch1);
}
void loop() {}
Ausgabe:
h.... world
Einige Zeichen der angegebenen Zeichenfolge werden durch ein anderes Zeichen ersetzt. Im Fall der Funktion memset()
haben wir das angegebene Array mit dem Datentyp int
definiert, da die Funktion nicht mit Arrays anderer Datentypen funktioniert.