0

我正在尝试将表示无符号整数的两个字节转换为 Long。字节在buffer其中是一个字节数组。

// buffer[0] = 0x7 and buffer[1] = 0x86
long myLong = ( buffer[0] & 0xFF ) << 8 + ( buffer[1] & 0xFF );
Log.i("TAG",String.format("%d", myLong ); // outputs "114688" (0x1c000)
Log.i("TAG",String.format("%d + %d",
    (0xFF&buffer[0])<<8, (0xFF&buffer[1]) )); // outputs "1792 + 134"

我将高字节移位,然后将两个字节加在一起。但是添加有一些问题。我希望第一个日志输出给出 1926,但这并没有发生。为什么?

4

1 回答 1

5

您对运算符优先级有疑问。+之前评估过<<。(通常|用于组合)。

long myLong = ((buffer[0] & 0xFF) << 8) | (buffer[1] & 0xFF)
于 2013-09-10T10:12:18.563 回答