标签:
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); }
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