Wie konvertieren von byte zu int?
Ich habe ein Arduino, das ist Lesen in einer Gruppe von drei bytes aus einem Programm, die den Grad, in dem ein Aktor schalten muss. Ich brauche zur Konvertierung von bytes in Ganzzahlen, so kann ich gehen diese ganzen zahlen auf meinem Aktoren.
Zum Beispiel, ich weiß, die Standard-rest-Zustand-Wert den ich empfangen aus dem Programm ist das 127. Ich schrieb ein C# - Programm interpretiert diese bytes und das kann Sie zu einer einzigen integer-Wert. Allerdings bin ich nicht in der Lage, um herauszufinden, wie dies in der Arduino-Umgebung mit C. ich habe versucht, Typisierung jedes byte für eine char und speichern in einem string. Jedoch gibt verfälschte Werte, die keinen Sinn machen.
void loop() {
if(Serial.available() && sw)
{
for(int j = 0; j < 3; j++)
{
input[j] = Serial.read();
}
//command = ((String)input).toInt();
sw = 0;
}
String myString = String((char *)input);
Serial.println(myString);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
2 Dinge hier:
Den Wert zurückgeben Serial.read() ein int.
Deshalb, wenn Sie den folgenden code-snippet:
int Eingabe[3];
for(int i=0; i<3 i++){
Eingabe[i]=Serial.read()
}
Dann Eingabe speichern soll drei ints. Allerdings ist der code:
Wird nur speichern Sie die byte-Konvertierung von int zu char.
Den code-snippet wäre:
Sollte dies funktionieren:
Übrigens die Standard-Sprache, die Sie verwenden, um Ihr Programm ein Arduino ist C++, nicht C. aber Sie haben auch einige Gemeinsamkeiten.
Unter Logik wird Ihnen helfen,
sonst können Sie union für diesen Fall
Aber union Implementierung zu berücksichtigen, little-und big-endian-Systemen