Ich arbeite derzeit an einem Projekt, das Daten von einer Java-Anwendung über eine serielle Schnittstelle an ein Arduino sendet.Java: Integer in 2 Bytes aufteilen und dann wieder zu einem Integer
Das Problem, das ich habe, ist das Folgende, ich muss ein Integer in 2 Bytes aufteilen und dann zu einem Integer in Arduino kombinieren. Aber umgekehrt (Arduino -> Java) bereitet mir nur Ärger. Der Arduino-Teil ist nicht so schwer und funktioniert wie ein Zauber, aber trotz mir durch die relevanten Fragen & Antworten bereits gepostet hier auf, kann ich nicht ganz herausfinden, wie man die Bytes richtig zu einem int kombinieren.
Hier ist der Java-Code, der gerade zur Arbeit verweigert: von diesem
int in = 500;
byte[] data = new byte[2];
data[0] = (byte)(in & 0xFF);
data[1] = (byte)((in >> 8) & 0xFF);
int res = data[0] | (data[1] << 8);
Die Konsole Ausdruck i erhalten:
zu 500
data[0] = -12
data[1] = 1
res = -12
aber ich brauche res!
Ein int besteht aus 4 Bytes, obwohl der Bestellung ... – Obicere
Wenn ich es richtig verstanden habe, möchten Sie 5 in 'data [0]', 0 in 'data [0]' speichern. Was ist mit den anderen 0. Sollte es nicht "Byte [3]" sein? –
Das Problem ist, dass Sie ein 'byte []' verwenden. Wenn Sie ein 'short []' oder ein 'int []' verwenden, würde es wie erwartet funktionieren –