Microsoft make things complicated part 2
2009-07-23 23:27
295 查看
继续研究压缩文件,我又崩溃了。
压缩文件以16个簇为单位进行压缩,按压缩后的数据的尺寸分配磁盘空间,然后配上相应的稀疏流,形成完整的单元描述。比如,某16簇数据压缩之后只占用7个簇,系统从卷的210H簇起分配了7个簇,那么其描述如下:
21 07 10 02 01 09
因为不同的数据压缩率不同,对于某些类型的数据,可能压缩之后的尺寸反而大于压缩前,因此,对于此类数据,直接写入磁盘反而提高效率。所以MS规定,如果流尺寸大于等于16簇,则表示该流是非压缩流,数据读入时不需要解压。比如某210H开始的非压缩流数据描述如下:
21 10 10 02
对于尺寸刚好16个簇的流,那也罢了。
对于尺寸大于16个簇的流,欢乐的事就开始了。
比如某16H个簇的数据非压缩数据,那么该流的描述是(假设数据位置还是从210H开始):
21 16 10 02
因此,第一个单元(201H,10H)是非压缩数据,而其后的6个簇的数据因为在同一个描述内,所有也是非压缩数据,因为该单元的前6个簇是非压缩数据,所以该单元的所有数据都是非压缩数据,那么,假设第二个单元的数据存放在:
400H 5H, 450H 5H
这流描述就是:
21 16 10 02 21 05 00 04 21 05 50 04
这样,前后两个单元都是非压缩数据,这也罢了,如果第二个单元的最后一个描述超出该单元(比如450H 5H的那个流变成450H 7H,描述了再下一单元的2个簇),那么其后的单元(第三个单元)也是非压缩数据-_-b,我们可以以此类推……OMG!整个压缩文件都是非压缩数据………劳资泪奔T_T
压缩文件以16个簇为单位进行压缩,按压缩后的数据的尺寸分配磁盘空间,然后配上相应的稀疏流,形成完整的单元描述。比如,某16簇数据压缩之后只占用7个簇,系统从卷的210H簇起分配了7个簇,那么其描述如下:
21 07 10 02 01 09
因为不同的数据压缩率不同,对于某些类型的数据,可能压缩之后的尺寸反而大于压缩前,因此,对于此类数据,直接写入磁盘反而提高效率。所以MS规定,如果流尺寸大于等于16簇,则表示该流是非压缩流,数据读入时不需要解压。比如某210H开始的非压缩流数据描述如下:
21 10 10 02
对于尺寸刚好16个簇的流,那也罢了。
对于尺寸大于16个簇的流,欢乐的事就开始了。
比如某16H个簇的数据非压缩数据,那么该流的描述是(假设数据位置还是从210H开始):
21 16 10 02
因此,第一个单元(201H,10H)是非压缩数据,而其后的6个簇的数据因为在同一个描述内,所有也是非压缩数据,因为该单元的前6个簇是非压缩数据,所以该单元的所有数据都是非压缩数据,那么,假设第二个单元的数据存放在:
400H 5H, 450H 5H
这流描述就是:
21 16 10 02 21 05 00 04 21 05 50 04
这样,前后两个单元都是非压缩数据,这也罢了,如果第二个单元的最后一个描述超出该单元(比如450H 5H的那个流变成450H 7H,描述了再下一单元的2个簇),那么其后的单元(第三个单元)也是非压缩数据-_-b,我们可以以此类推……OMG!整个压缩文件都是非压缩数据………劳资泪奔T_T
相关文章推荐
- Microsoft make things complicated
- Why make things complicated when one can make them simple?
- Rotating Turrets: How To Make A Simple iPhone Game with Cocos2D Part 2
- iphone游戏开发-Collisions and Collectables: How To Make a Tile Based Game with Cocos2D Part 2
- Make things beautiful again !
- Microsoft .NET is 3 things
- 5 Things Every Manager Should Know about Microsoft SharePoint 关于微软SharePoint每个经理应该知道的五件事
- Five things that make Go fast
- Microsoft SOAP Toolkit Version 2.0 FAQ(Part 2)
- Things make us different
- How to make a resizable dialog bar in Microsoft Foundation Classes (MFC)
- (翻译).NET Type Internals - From a Microsoft CLR Perspective (part 1)
- Developing Workflows in VS: Part 2 - Planning Your Workflow: Two Things to Keep in Mind
- Harder Monsters and More Levels: How To Make A Simple iPhone Game with Cocos2D Part 3
- How To Make A Simple Multiplayer Game with Game Center Tutorial: Part 2/2
- raywenderlich-Rotating Turrets: How To Make A Simple iPhone Game with Cocos2D Part 2
- little things make life great
- make things simple
- How to make Microsoft Enterprise Library June 2005 June release work with VS2005 beta 2?
- Ruby On Rails Connection To MicroSoft SQL Server [Part 2]