2016-05-17 3 views
1

私は2バイトの符号なしデータとして扱うべきバイト配列を持っています。 以下のコードは257を表しています。私はそれを短いものとして保存しようとしていますが、エラーが発生しています。割り当ての左側は変数でなければなりません。これを行う巧妙な方法はありますか?助けてください。Javaバイトシフト

byte[] unsigned2ByteNum = new byte[2]; 
    unsigned2ByteNum[0] = 1; 
    unsigned2ByteNum[1] = 1; 

    short port = 0; 
    (byte)(port >> 8) = portNum[0]; 
    (byte)(port) = portNum[1]; 
+1

左手側ではなく、右手側をシフトする必要があります。 – Kayaman

答えて

3

あなたはこれを後方に持っています。式に値を代入することはできません。変数にのみ値を代入できます。

short port = (short) ((portNum[0] << 8) | (0xff & portNum[1])); 

これは、portNum[0]が上位バイトであると仮定しています。

EDIT:負の下位バイトを符号なしとして扱うように変換を修正しました(たとえば、{1、-1}は-1ではなく511に変換されます)。

関連する問題