Java Byte Shift

时间:2016-05-17 09:02:53

标签: java arrays bit-manipulation

我有一个字节数组,应该被视为2个字节的无符号数据。 所以下面的代码代表257.我试图将它存储为short,但我收到一个错误:赋值的左侧必须是变量。有没有聪明的方法来做到这一点?请帮忙。

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

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

1 个答案:

答案 0 :(得分:3)

你倒退了。您不能为表达式赋值,只能为变量赋值。

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

这假设portNum[0]是高字节。

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