Question

J'ai un cadre de 22 octets. Le cadre est le courant d'entrée provenant d'un accéléromètre via bluetooth. Les lectures de acceleromter sont une fraction de nombre de 16 bits sur deux octets.

Quand je tente de fusionner les octets avec un tampon [1] + tampon [2], plutôt que d'ajouter les octets, il met juste le côté des résultats côte à côte. si 1 + 2 = 12.

Quelqu'un pourrait-il me dire comment combiner ces deux octets pour obtenir le numéro d'origine. (BTW les octets sont envoyés peu endian)

Merci

Était-ce utile?

La solution

Voici le code:

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

Autres conseils

Voici une meilleure réponse qui pourrait faire un peu plus de sens ...

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

(b2 & 0xFF) sort avec le même motif binaire exacte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top