Javaに8ビットのバイト配列があります。バイト配列は、外部センサーから受信する16ビット数の上位バイトと下位バイトで構成されます。
たとえば、バイト配列は次のようになります。
00 00 00 01 00 02 00 03
0 1 2 3 4 5 6 7
上記のバイト配列では、各偶数インデックスは16ビット数の上位バイトであり、各奇数インデックスは下位バイトです。
私が抱えている問題は、数値が127を超えて、数値の2の補数表現が優先される場合です。私が本当にやりたいのは、POSITIVEの符号なし番号を保持することです。したがって、2の補数は気にしません。これが私が成功せずにやろうとしたことです。
byte[] buffer = new byte[1024];
//SOME CODE SNIPPET THAT PUTS NUMBERS B/W 0-500 INTO THE BUFFER RANDOMLY
for(int i = 0; i < 1024; i+=2) {
int twoByte = 0;
short high = 0, low = 0;
high = (short)buffer[i];
low = (short)buffer[i+1];
twoByte = ((high << 8) | low);
System.out.println(twoByte);
}
8ビットの数字を符号なしにするためにshortに変換しようとしましたが、Javaは先行0の広告を切り捨てて8ビットとして扱い、負の符号を保持しているようです。誰かがおそらくより良い方法を知っていますか?
##編集:それが重要かどうかはわかりませんが、これはAndroidで実行されているアプリケーションであることに言及する価値があるかもしれません。##
乾杯、