码迷,mamicode.com
首页 > 移动开发 > 详细

[Android] Volley源代码分析(五岁以下儿童)Q \\ u0026一个

时间:2015-07-14 13:12:28      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

Volley源代码分析系列那里一段时间,告诉我,有许多私人留言,同时一些问题抛出。对于一些简单的问题,我们跳,这两天被连接到朋友@smali提出的问题。告诉我你不得不赞叹查看源代码时的详细程度,大家一块思考一下。

Q:在写入文件头数据的时候为何不直接写入Int而是通过移位的方式来完毕?

我们来看一下相应的源代码:

writeInt(os, CACHE_MAGIC);
static void writeInt(OutputStream os, int n) throws IOException {
        os.write((n >> 0) & 0xff);
        os.write((n >> 8) & 0xff);
        os.write((n >> 16) & 0xff);
        os.write((n >> 24) & 0xff);
}

首先我们知道Output流本身提供write(Int)的方法为何要再通过移位呢?

A:我们知道,实际上对于一个流来说,它能直接操纵的数据是一个byte。这个问题的根源在于对OutputStream提供的write(Int)的误解。实际上对于OutputStream来说,当你传入一个int的时候,它会将这个Int截断,取得低端的byte长度的数据写入流其中。也就是说对于0xffffff00这些位上的数据会丢失。

所以仅仅能通过移位的方式来写入,或者是你计算好4个byte的数组,然后写入到你的流中。


thx~


版权声明:本文博客原创文章,博客,未经同意,不得转载。

[Android] Volley源代码分析(五岁以下儿童)Q \\ u0026一个

标签:

原文地址:http://www.cnblogs.com/mengfanrong/p/4644975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!