0

私は整数配列を持っています

int res[] = {176, 192, 312, 1028, 1064, 1016};

このような対応するint配列の符号付きバイト配列を取得します

int signed_byte_array[] = {-80, 0, -64, 0, 56, 1, 4, 4, 40, 4, -8, 3};

int 配列の各インデックスは、バイト配列の 2 つのインデックスで表されます。これは、int 配列の各値が 2 バイトとして表されることを意味します。

int 配列にアクセスできないので、この符号付きバイト配列を正確に int 配列に変換したい

これどうやってするの?

ありがとう

4

2 に答える 2

1

バイトは符号なし 16 ビット整数を表し、最上位バイトが 2 番目に来て、8 番目より上のビットが切り捨てられているようです。次のように変換できます。

int[] signed_byte_array = {-80, 0, -64, 0, 56, 1, 4, 4, 40, 4, -8, 3};
int[] int_array = new int[signed_byte_array.length / 2];
for (int i = 0 ; i != int_array.length ; i++) {
    int_array[i] = (signed_byte_array[2*i+1] & 0xFF) << 8
                 | (signed_byte_array[2*i+0] & 0xFF);
}

ループ内に印刷を追加するとint_array[i]、次の値が得られました。

176 192 312 1028 1064 1016
于 2013-06-21T10:18:26.087 に答える