Frage

ich einen Rahmen von 22 Byte haben. Der Rahmen ist der Eingangsstrom von einem Beschleunigungsmesser über Bluetooth. Die acceleromter Ablesungen sind eine 16-Bit-Zahl aufgeteilt auf zwei Bytes.

Wenn ich versuche, das Bytes mit Puffer zu fusionieren [1] + buffer [2], anstatt die Bytes hinzufügen, es setzt nur die Ergebnisse nebeneinander. so 1 + 2 = 12.

Kann mir jemand sagen, wie diese zwei Bytes zu kombinieren, um die ursprüngliche Zahl zu erhalten. (Btw das Bytes gesendet Little-Endian)

Danke

War es hilfreich?

Lösung

Hier ist der Code:

public static short twoBytesToShort(byte b1, byte b2) {
          return (short) ((b1 << 8) | (b2 & 0xFF));
}

Andere Tipps

Hier ist eine bessere Antwort, die ein wenig mehr Sinn ...

machen könnte
public static short twoBytesToShort(byte b1, byte b2) {
          return (short) ((b1 << 8) | b2);
}

(b2 & 0xFF) kommt mit den gleichen genauen binären Mustern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top