android源码ril.java中的一个大小端问题

wenguess 2012-09-19 10:45:11
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);
谁解释下什么意思?
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
哥已注销 2013-02-27
  • 打赏
  • 举报
回复
以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址; read(buffer, offset, remaining); 读入 remaining 长度的流数据; JVM 用 big-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。
哥已注销 2013-02-27
  • 打赏
  • 举报
回复
以 little-endian 存储时,数据低位存储在内存低地址,数据高位存储在内存高地址; read(buffer, offset, remaining); 读入 remaining 长度的流数据; JVM 用 little-endian 存储 int 型的 messageLength ,所以得用位操作转换一下。
哥已注销 2013-02-27
  • 打赏
  • 举报
回复
messageLength = ((buffer[0] & 0xff) << 24) | ((buffer[1] & 0xff) << 16) | ((buffer[2] & 0xff) << 8) | (buffer[3] & 0xff); 这是 readRilMessage 的代码吧。 这段代码是把以 little-endian 存储的数据还原到本来的样子。

80,400

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧