UMD格式与解析详解
Powered by rhythmzhang, May 8th,2015
本文是对于UMD格式结构分析,并针对iOS平台利用Object-C解析UMD文件,给出完整流程与实现。
本篇文章包括以下部分:
1. 前言
2. UMD结构说明
3. 解析UMD(以Objective-C语言为例)
1. 前言:
UMD是一种在几年前较为常见的电子书格式,尽管现在它已经逐渐被遗忘了。UMD主要分为3种格式类型:纯文本格式,漫画/写真集格式,连环画(文字+图片)格式。本文只讨论纯文本格式(即通用的小说格式)的umd文件的解析过程与格式结构分析。
UMD文件本质是经过zlib压缩后的压缩数据,并且按照特定的先后顺序来排列小说文章的结构与内容。小说的内容被顺序的分成有序且连续的数据块。UMD文件编码为UNICODE(UCS-2)。
2. UMD结构说明:
UMD基本结构如下图(umd文件的数据块结构按照该图由上往下一一对应)
2.1 文件标识符
UMD文件的前4个字节(第1到第4字节,本文所有计数均从1开始,而非从0开始)一定为0xde9a9b89,若前4字节不为此标识,则一定不是UMD文件。
2.2 UMD类型标识
第10个字节为类型标识。其值若为0x0001则表示是纯文本UMD文件,若为0x0002则表示为动漫UMD。
2.3 小说基本属性
从第13字节开始(含当前字节),为小说属性块。依次描述小说的标题,作者,出版年,月,日,日,出版商,零售商信息。每个属性块由5个固定字节与若干接在属性后的内容段构成(内容段为unicode编码)。详细见下图。
其中属性标识符的值意义如下表,