2 Byte auf eine Short

  • 1 Antworten
  • Letztes Antwortdatum
S

sk84fun

Neues Mitglied
1
Hallo!

Habe eine kurze Frage, sie betrifft zwar eher Java, da ich aber auf Android entwickle, sollte Sie doch hier auch rein passen:

Ich bekomme Daten in einen Bytearray (ByteStream) über Bluetooth, wobei jeweils 2 Byte zusammen eine Zahl ergeben (short).
Die Byte die kommen sind aber unsigned und in Java sind ja alle Datentypen (byte, short, int, long) signed.
Jetz mache ich folgende Umrechnung:

int Test = (int) (((short)(temp[0] & 0x000000FF) <<8) | (short)(temp[1] & 0x000000FF));

wobei temp[] eben ein Byte Array ist. Sollte doch so stimmen, oder weiß jemand ob das nicht stimmt?

Ich habe nämlich jetzt ein wenig mit Werten herumgespielt, und wenn ich auf temp[0] und temp[1] jeweils -127 (dann sollten doch alle Bit gesetzt sein, also 11111111 11111111) schreibe, dann ist das Ergebnis: 33153 (Also 10000001 10000001), wenn ich allerdings -1 und -1 drauf schreibe (Sollte ja dann so aussehen 10000001 10000001)dann kommt als Ergebnis 65535 heraus (also 11111111 11111111).

Warum ist das so, bzw. wie muss ich die Umrechnung sonst durchführen?
 
A

Anzeige

  • Gerade eben
  • Neu
Zurück
Oben Unten