dataLength[0] = dataLength[1] = 0;
 dataLength[2] = (byte)((data.length >> 8) & 0xff);
 dataLength[3] = (byte)((data.length) & 0xff);messageLength = ((buffer[0] & 0xff) << 24)
| ((buffer[1] & 0xff) << 16)
| ((buffer[2] & 0xff) << 8)
| (buffer[3] & 0xff);
谁解释下什么意思?

解决方案 »

  1.   

    messageLength = ((buffer[0] & 0xff) << 24)
    | ((buffer[1] & 0xff) << 16)
    | ((buffer[2] & 0xff) << 8)
    | (buffer[3] & 0xff);这是 readRilMessage 的代码吧。
    这段代码是把以 little-endian 存储的数据还原到本来的样子。
      

  2.   

    以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址;
    read(buffer, offset, remaining); 读入 remaining 长度的流数据;
    JVM 用 little-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。
      

  3.   

    以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址;
    read(buffer, offset, remaining); 读入 remaining 长度的流数据;
    JVM 用 big-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。