1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

2 Byte auf eine Short

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sk84fun, 07.06.2010.

  1. sk84fun, 07.06.2010 #1
    sk84fun

    sk84fun Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    20.05.2010
    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?
     
  2. Kranki, 07.06.2010 #2
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite

Diese Seite empfehlen