2016-05-17 65 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]是高位字节。

编辑:更正了将负低字节视为无符号的转换(以便例如将{1,-1}转换为511而不是-1)。