質問

22バイトのフレームがあります。フレームは、Bluetoothを介した加速度計からの入力ストリームです。アクセラオマターの測定値は、2バイトにわたって16ビットのスプリットされた数字です。

バイテをバッファー[1] +バッファー[2]でマージしようとすると、バイトを追加するのではなく、結果を並べて配置するだけです。したがって、1+2 = 12。

これらの2つのバイトを組み合わせて元の数値を取得する方法を教えてもらえますか。 (ところで、バイトはリトルエンディアンに送られます)

ありがとう

役に立ちましたか?

解決

これがコードです:

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

他のヒント

これがもう少し理にかなっているかもしれないより良い答えです...

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

(B2&0xff)は、まったく同じバイナリパターンを備えています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top