質問How to Convert two 8 bit represented byte to single 16 bit represented integer value in Androidを参照してください。 私はこの負の数のAndroid 8ビットから16ビットへの表現
short yourinteger16 = (short)(((bytes[0] & 0xFF) << 8) | (bytes[1] & 0xFF));
のような答えを得た。この答えは、正の数に対して正しいです。しかし、負の数の場合、それは失敗しています。
たとえば、BLEの値をアプリケーションに-10として送信しています。電流と電圧のmAh/mV変換のため、この値は-10000としてBLEから変換されます。これらの値は2バイトに分割され、アプリケーションで-39と-16のバイト値を取得しています。私は以下のようにメソッドにバイトを渡しています。
short yourinteger16 = (short)(((-39 & 0xFF) << 8) | (-16 & 0xFF));
しかし、私はyourinteger16の浮動小数点値として9.77という結果を得ています。
誰もがこれについて考えていますか?すべての解決策は私を更新してください。
全コード:あなたは(それぞれ、-10000のためのハイとローバイト)-39および-16 完璧を受けている
protected Integer get8ByteTo16Byte(int firstValue, int secondValue) {
Short integerValue = (short)((((byte) firstValue & 0xFF) << 8) | ((byte) secondValue & 0xFF));
return new Integer(integerValue);
}
どのようにしてフロートを作成しますか?その結果得られる短い値は何ですか? – Fildor
整数integerValue =(((byte)firstValue&0xFF)<< 8)|((byte)secondValue&0xFF)); float newAmp =整数値.floatValue(); – Nithinjith
ああ、ちょっと待ってください...それはHex -39かDec -39ですか? – Fildor