Obecnie pracuję nad projektem, który wysyła dane z aplikacji java przez port szeregowy do Arduino.Java: Dzielenie Integer na 2 bajty, a następnie łączenie ich ponownie w Integer
Problem jaki mam jest następujący: muszę podzielić liczbę całkowitą na 2 bajty, a następnie połączyć je w liczbę całkowitą w Arduino. Ale na odwrót (Arduino-> java) tylko sprawia mi kłopoty. Część arduino nie jest tak trudna i działa jak urok, ale mimo tego, że przeglądam odpowiednie pytania & Odpowiedzi już zamieszczone tutaj, nie mogę całkiem pojąć, jak połączyć bajty poprawnie razem w int.
Oto kod Java, który po prostu nie chce pracować: print
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);
Konsola się i uzyskać z tego jest:
data[0] = -12
data[1] = 1
res = -12
ale muszę res być 500!
int składa się z 4 bajtów, chociaż ... – Obicere
Jeśli dobrze rozumiem, chcesz zapisać 5 w 'data [0]', 0 w 'data [0]'. A co z drugim 0. Nie powinno to być "bajtem [3]"? –
Problem polega na tym, że używasz 'bajtu []'. Jeśli użyjesz 'short []' lub 'int []', to będzie działało zgodnie z oczekiwaniami –