25

配列内のデータが実際には短いデータであるバイト配列があります。バイトはリトル エンディアンで並べられます。

3、1、-48、0、-15、0、36、1

短い値に変換すると、次のようになります。

259、208、241、292

Javaでバイト値を対応する短い値に変換する簡単な方法はありますか? すべての上位バイトを取得して 8 ビットずつシフトし、下位バイトと OR するループを作成できますが、パフォーマンスが低下します。

4

2 に答える 2

57

java.nio.ByteBufferを使用すると、必要なエンディアンを指定できます:order()

ByteBufferには、データをbyte、char、getShort()getInt()、long、double..として抽出するメソッドがあります。

使用方法の例を次に示します。

ByteBuffer bb = ByteBuffer.wrap(byteArray);
bb.order( ByteOrder.LITTLE_ENDIAN);
while( bb.hasRemaining()) {
   short v = bb.getShort();
   /* Do something with v... */
}
于 2013-02-12T07:22:02.203 に答える