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

本文深入探讨了Volley框架中文件头数据的写入方式,解释了为何采用位移操作而非直接使用OutputStream的write(Int)方法的原因,并提供了详细的源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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~


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

转载于:https://www.cnblogs.com/mengfanrong/p/4644975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值