私は現在、いくつかの24ビット整数を扱う作業を行っています。
基本的に、これらの 24 ビットから符号付きと符号なしの両方の値を取得できる必要があります。
現在、次のコードを使用して 3 バイトをまとめて、その値を返しています。
private static int bytesToInt(byte[] input) {
if (input.length == 3) {
return (input[2] & 0xFF) << 16 | (input[1] & 0xFF) <<8 | (input[0] & 0xFF);
}
}
私が与えている入力はバイトです。0x42 0x87 0xfe
返される結果は次のとおりです。16680770
これは(私が信じている)正しい符号なしの値ですが、符号付きの値も必要です。-96446
それを解決するには、ここでビットシフトを行う必要があると思いますが、これを達成する方法がわかりません。
結果を an と long にキャストしようとしましたが、どちらも符号付きの値を返しません。Math.abs(result) も試しましたが、それを正しく使用しているとは思いません。
任意の入力をいただければ幸いです。
ありがとう