android源码ril.java中的一个大小端问题
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);
谁解释下什么意思? --------------------编程问答-------------------- messageLength = ((buffer[0] & 0xff) << 24)
| ((buffer[1] & 0xff) << 16)
| ((buffer[2] & 0xff) << 8)
| (buffer[3] & 0xff);
这是 readRilMessage 的代码吧。
这段代码是把以 little-endian 存储的数据还原到本来的样子。
--------------------编程问答-------------------- 以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址;
read(buffer, offset, remaining); 读入 remaining 长度的流数据;
JVM 用 little-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。 --------------------编程问答-------------------- 以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址;
read(buffer, offset, remaining); 读入 remaining 长度的流数据;
JVM 用 big-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。
补充:移动开发 , Android