1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. sk84fun, 07.06.2010 #1
    sk84fun

    sk84fun Threadstarter Neuer Benutzer

    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