2 Byte auf eine Short

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?
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
135
swa00
swa00
R
Antworten
4
Aufrufe
733
Rapidoman
R
Zurück
Oben Unten