Domanda

Ho una struttura di 22 byte. Il telaio è il flusso di input da un accelerometro via bluetooth. Le letture acceleromter sono un certo numero di divisione 16 bit su due byte.

Quando provo a fondere i byte con tampone [1] + tampone [2], invece di addizionare i byte, appena mette il risultati passo per passo. così 1 + 2 = 12.

Qualcuno potrebbe dirmi come combinare questi due byte per ottenere il numero originale. (Btw i byte vengono inviati little endian)

Grazie

È stato utile?

Soluzione

ecco il codice:

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

Altri suggerimenti

Ecco una risposta migliore che potrebbe fare un po 'più senso ...

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

(b2 & 0xFF) esce con lo stesso modello binario esatto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top