﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>花太香齐的博客 &#187; 编码</title>
	<atom:link href="http://www.ieliwb.com/tag/%e7%bc%96%e7%a0%81/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ieliwb.com</link>
	<description>灵感的来临，没有任何预兆；灵感的消失，也不会有告别仪式；用文字记下她们吧，让灵感永存……</description>
	<lastBuildDate>Sun, 21 Nov 2010 03:36:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>umd文件结构深度解剖（附手机umd电子书生成算法类&#124;PHP版）</title>
		<link>http://www.ieliwb.com/umd-txt-php/</link>
		<comments>http://www.ieliwb.com/umd-txt-php/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 06:49:30 +0000</pubDate>
		<dc:creator>花太香齐</dc:creator>
				<category><![CDATA[PHP/WEB]]></category>
		<category><![CDATA[umd]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[编码]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=173</guid>
		<description><![CDATA[记得刚开始准备做小说下载站时（UMD格式的电子书应该在Nokia机上是相当的流行吧），研究UMD文件,在网上搜不到UMD文件结构说明.费了好大的劲,用反编译工具才找到相关信息.可惜对C#不了解，只能摸到点皮毛，差点就放弃了，后来一个偶然的机会看到2lin兄和Mark兄的结构文章，振奋人心啊，于是对着UE打开标准umd文件的16进制码和2位仁兄的结构分析，用偶熟悉的php，做了一个umd生成类，对umd文件编码。解码应该也很简单的一个求逆运算，就不啰嗦了。 

<strong>相关关键字节含义：</strong>
<blockquote>
0x23，也就是字符’#’，这个字符在Umd中被用来作为功能块的分割符。

1.已知的#块（类型也就是#后面的16进制数字）
0x01--文件开始
0x02--标题
0x03--作者
0x04--年
0x05--月
0x06--日
0x07--小说类型
0x08--出版商
0x09--零售商
0x0b--内容长度
0x83--章节偏移
0x84--章节标题，正文
0x81--正文写入完毕
0x82--封面
0x87--PageOffset
0x0c--文件结束

2. 整数编码为littleEndian, 也就是低字节在前，高字节在后，相应的，所有的文本也都是Unicode16 LittleEndian编码的
3. 章节数据块(0x84)后面的第一个数据块是所有章节的标题，按照以下规则排列：
[第1章标题文本的字节长度(1byte)][第1章标题unicode文本][第2章标题文本的字节长度(1byte)][第2章标题unicode文本]...
4. 章节数据块(0x84)后面的第二个数据块及以后的数据块是正文文本数据，是用标准zlib算法压缩的
5. 似乎每个数据块的字节大小都在18K以内
6. 似乎正文中的换行(\r\n)都被替换成了unicode段分隔符\u2029，不知道是否跟制作工具有关
7. 封面图片的数据是未压缩的，也就是说直接把数据段复制出来保存成一个jpg文件就可以了
</blockquote>[......]<p class='read-more'><a href='http://www.ieliwb.com/umd-txt-php/'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>记得刚开始准备做小说下载站时（UMD格式的电子书应该在Nokia机上是相当的流行吧），研究UMD文件,在网上搜不到UMD文件结构说明.费了好大的劲,用反编译工具才找到相关信息.可惜对C#不了解，只能摸到点皮毛，差点就放弃了，后来一个偶然的机会看到2lin兄和Mark兄的结构文章，振奋人心啊，于是对着UE打开标准umd文件的16进制码和2位仁兄的结构分析，用偶熟悉的php，做了一个umd生成类，对umd文件编码。解码应该也很简单的一个求逆运算，就不啰嗦了。 </p>
<p><strong>相关关键字节含义：</strong></p>
<blockquote><p>
0&#215;23，也就是字符’#’，这个字符在Umd中被用来作为功能块的分割符。</p>
<p>1.已知的#块（类型也就是#后面的16进制数字）<br />
0&#215;01&#8211;文件开始<br />
0&#215;02&#8211;标题<br />
0&#215;03&#8211;作者<br />
0&#215;04&#8211;年<br />
0&#215;05&#8211;月<br />
0&#215;06&#8211;日<br />
0&#215;07&#8211;小说类型<br />
0&#215;08&#8211;出版商<br />
0&#215;09&#8211;零售商<br />
0&#215;0b&#8211;内容长度<br />
0&#215;83&#8211;章节偏移<br />
0&#215;84&#8211;章节标题，正文<br />
0&#215;81&#8211;正文写入完毕<br />
0&#215;82&#8211;封面<br />
0&#215;87&#8211;PageOffset<br />
0&#215;0c&#8211;文件结束</p>
<p>2. 整数编码为littleEndian, 也就是低字节在前，高字节在后，相应的，所有的文本也都是Unicode16 LittleEndian编码的<br />
3. 章节数据块(0&#215;84)后面的第一个数据块是所有章节的标题，按照以下规则排列：<br />
[第1章标题文本的字节长度(1byte)][第1章标题unicode文本][第2章标题文本的字节长度(1byte)][第2章标题unicode文本]&#8230;<br />
4. 章节数据块(0&#215;84)后面的第二个数据块及以后的数据块是正文文本数据，是用标准zlib算法压缩的<br />
5. 似乎每个数据块的字节大小都在18K以内<br />
6. 似乎正文中的换行(\r\n)都被替换成了unicode段分隔符\u2029，不知道是否跟制作工具有关<br />
7. 封面图片的数据是未压缩的，也就是说直接把数据段复制出来保存成一个jpg文件就可以了
</p></blockquote>
<p><strong>umd文件简介（C#）：</strong></p>
<blockquote><p>
注：来自<a href="http://2lin.net/blog/default.aspx" target="_blank">2lin@ 爱林－博客</a><br />
UMD首先会在文件头写入一个<br />
     UINT类型 值为 0xde9a9b89 可能是用于识别版本类别什么的.<br />
然后的格式大概如下<br />
#<br />
short 1  //文件信息<br />
byte 0<br />
byte 8   //这个值用是用来定义后面长度的.  实际长度为 值-5<br />
byte 2   //这里1为普通书 2为漫画书<br />
short random1.Next(0&#215;401, 0&#215;7fff) % 0xffff //PGKSeed</p>
<p>#<br />
short 2 //文件标题<br />
byte 0<br />
byte  *  //标题长度=*-5<br />
byte[] * //写入标题</p>
<p>#<br />
short 3 //作者名称<br />
byte 0<br />
byte  *  //作者名称长度=*-5<br />
byte[] * //写入作者名称</p>
<p>接下来的是可选的其格式和上面的一样<br />
#4 //年  #5 //月 #6 //日 #7 //书的类别 #8 //出版人 #9 //出售人</p>
<p>写入文章长度<br />
#<br />
short 11<br />
byte 0<br />
byte 9<br />
int * //长度<br />
写入章节数<br />
#<br />
short 0&#215;83<br />
byte 1<br />
byte 9<br />
uint 0&#215;3000 + random1.Next(0xfff); //这个值用来关联0&#215;83<br />
$<br />
uint * //这个值就是上面关联0&#215;83随机产生的值<br />
uint 9 + (章节长度 * 4) //章节长度<br />
byte[] * 写入每章的偏移值</p>
<p>写入章节标题<br />
#<br />
short 0&#215;84<br />
byte 1<br />
byte 9<br />
uint 0&#215;4000 + random1.Next(0xfff); //这个值用来关联0&#215;84<br />
$<br />
uint * //这个值就是上面关联0&#215;84随机产生的值<br />
uint 9 + 所有标题相加的长度<br />
byte[] * 写入所有章节标题</p>
<p>写入压缩后的内容<br />
$<br />
uint random1.Next(1, 0xfffffff) * -1<br />
uint 9+压缩后的长度<br />
byte[] * //写入压缩后的内容</p>
<p>在压缩的时候 有可能把文章分成了很几段 所以 前面写压缩内容也许会接着再写一次 并且在中间随机写入<br />
#<br />
short 10<br />
byte 0<br />
byte 9<br />
int CID //标识用的</p>
<p>写入结束<br />
#<br />
short 0xf1<br />
byte 0<br />
byte 0&#215;15<br />
＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0＼0<br />
最后还要写封面数据 代号 # 0&#215;81 这里就不多讲了.
</p></blockquote>
<p><strong>UE16进制分析：</strong></p>
<blockquote><p>
来自：<a href="http://blog.sina.com.cn/s/blog_5ccfd2d50100bp3t.html~type=v5_one&#038;label=rela_nextarticle" target="_blank">mark的博客</a> </p>
<p>UMD文件有三种格式类型,一种叫纯文本格式,一种叫漫画&#038;写真集格式，以及连环画（文字+图画）.<br />
文本格式中的文字流是用ZLIB进行压缩的,今天我们就先来了解一下文本格式的UMD文件吧.</p>
<p>文本格式类弄的UMD文件的组成格式如下:</p>
<p>1.首先是文件头，大部分文件都是靠文件头来区分文件格式的吧，Umd也不例外，Umd的文件头是0xde9a9b89，写到文件上前四位分别应该是0&#215;89,0&#215;9b,0&#215;9a,0xde,这个大家理解起来应该没什么问题吧，以下的类似。(如果不是此格式,即不为UMD文件)</p>
<p>2.第5到9个字节为:0&#215;23 0&#215;01 0&#215;00 0&#215;08 0&#215;01 （注：0&#215;23，也就是字符’#’，这个字符在Umd中被用来作为功能块的分割符。）</p>
<p>3.第10个字节为:0&#215;01/0&#215;02.注0&#215;01代表文本格式的UMD文件,0&#215;02代表动漫格式的UMD文件<br />
4.接下来2个字节的随机数.没有任何意义,可以扔掉.(呵呵,记住目前是第12个字节了)<br />
5.第13个字节为:0X23(必须的)<br />
6.解析接下来的2个字节0X02 0X00.即为数据类型.目前数据类型为2.代表的意思是以下的数据代表文件的TITLE.<br />
那下面让我们观注如何解析TITLE吧.(呵呵.目前好像是第16个字节了吧)<br />
7.第17个字节0X00(必须的)<br />
8.解析第18个字节值.该字节的组成是:TITLE的长度*2 + 5.所以你要得到TITLE的长度必须要减五.<br />
另外TITLE的长度为什么要*2,因为UMD是用UNICODE编码文件数据的.<br />
9.注意现在就不能按多少个标准字节记数了,因为文件不一样,TITLE不一样.长度也不一样了.<br />
那就继续看吧.再读TITLE长度个字节,就得到了TITLE的数据.<br />
10.TITLE数据读完后,接下来1个字节是:0X23也就是&#8217;#'字符(必须的)<br />
11.解析接下来的2个字节0X03 0X00.即为数据类型.目前数据类型为3.代表的意思是以下的数据代表文件的Author.<br />
12.接下来1个字节是0X00(必须的)<br />
13.接下来解析1个字节,该字节的组成Author的长度*2 + 5.所以你要得到Author的长度必须要减五.</p>
<p>注意!!!大家会发现TITLE和Author的解析过程是一样的,哈哈.你非常厉害.确实解析是一样的.即然这样我就不再重复费话了.因为下面涉及到的解析都是这个流程.<br />
14.下面会解析到year = 4,mouth = 5,day = 6,gender = 7,publisher = 8,Vendor = 9.OK解析完成以上的数据后UMD的基本信息你已经得到了.</p>
<p>15.紧接着的第1个字节:0X23 也就是&#8217;#'(大家会发现,UMD是用#来进行数据隔离的)<br />
16.解析2个字节:0&#215;0B 0&#215;00 数据类型为11<br />
17.接下来2个字节:0X00 0X09(必须的)<br />
18.接下来4个字节:代表内容长度.<br />
19.内容长度解析完成,用分隔符&#8217;#&#8217;.所以接下1个字节是0X23<br />
20.接下来2个字节代表数据类型.0X83章节偏移量.<br />
21.接下来2个字节:0X01 0X09<br />
22.接下来4个字节:代表一个随机数,目前看来是起同步作用的.<br />
23.接下来1个字节:0X36 也就是&#8217;$'$了.哈哈.<br />
24.接下来4个字节:也是随机数.但是和22的随机数一样<br />
25.接下来4个字节:代表偏移量的长度*4 + 9.所以偏移量的长度为:你解析出来的(len &#8211; 9)/4.<br />
26.接下来偏移量长度个字节:每个字节代表:每节章节的偏移地址.<br />
27.偏移量数据块解析完成了.接下来又是数据分隔符&#8217;#&#8217; 0X23<br />
28.接下来2个字节:数据类型0X84 .章节标题<br />
29.接下来2个字节:0X01 0X09(必须的)<br />
30.接下来4个字节:随机数<br />
31.接下来1个字节:$<br />
32.接下来4个字节:随机数.二次随机数要相等<br />
33.接下来4个字节:代表 (标题长度*2 + 1) + 9<br />
34.接下来取得每个标题的数据.<br />
分析一下:为了取得每个标题的数据,如果有三个标题显然要取三次.OK.<br />
那如何取呢?<br />
我们先来解释第一个标题是如何取的.<br />
接下来1个字节:标题的长度*2 =  count.<br />
接下来count个字节:就是标题的内容数据.<br />
其他的标题同样的方法.接着取即可.<br />
那标题取完后,接下来的数据会是什么呢?<br />
想必现在应该章节类的数据了吧.好那让我们继续看吧!<br />
35.接下来1个字节:$<br />
36.接下来4个字节:随机数<br />
37.接下来4个字节:数据流的长度 + 9 = count<br />
38.接下来数据流长度个字节就是数据了.(注意目前的注意是ZLIB压缩的数据)<br />
接下来UMD做了安全处理.生成三个随机数.如果随机数有二个相同.处理一些数据.如果不相同就不处理.<br />
39.让我们看看相等的情况吧.下面的数据可能会有下面二种情况的组合出现.<br />
(1)<br />
接下来1个字节:&#8217;#'分隔符<br />
接下来2个字节数据类型:0XF1 0X00<br />
接下来2个字节:0X00 0X15<br />
接下来16个字节空数据<br />
(2)<br />
接下来1个字节:&#8217;#'分隔符<br />
接下来2个字节数据类型:0X0A 0X00<br />
接下来2个字节:0X00 0X09<br />
接下来4个字节:随机数<br />
40.接下来1个字节:&#8217;#'分隔符<br />
41.接下来2个字节:数据类型 0X81 0X00<br />
42.接下来2个字节:0X01 0X09<br />
43.接下来4个字节:随机数<br />
44.接下来1个字节:$<br />
45.接下来4个字节:随机数<br />
46.接下来4个字节: (页面数*4 + 9) = count<br />
47.接下来页面数*4个字节.<br />
48.接下来1个字节:&#8217;#'分隔符<br />
49.接下来2个字节:0X82 0X00数据类型//封面图<br />
50.接下来3个字节:0X01 0X0A 0X01<br />
51.接下来4个字节:随机数<br />
52.接下来1个字节:$<br />
53.接下来4个字节:随机数<br />
54.接下来4个字节:封面长度 + 9<br />
55.接下来封面长度个字节</p>
<p>56.接下来1个字节:&#8217;#'分隔符<br />
57.接下来2个字节:0X0C 0X00数据类型<br />
58.接下来2个字节:0X0C 0X00数据类型//结束吧!!!<br />
59.接下来2个字节:0X01 0X09<br />
60.接下来4个字节:整个文件长度//<br />
到此为此我们的UMD文件解析完成.
</p></blockquote>
<p><strong>php生成umd文件类源码：</strong></p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">&lt;?php</span><span style="color: Gray;"><br /></span><span style="color: #ffa500;">/**<br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;* UMD编码,文本转umd文件,测试可用在支持umd的阅读器上<br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;*</span><span style="color: Blue;"> @HXPHP </span><span style="color: #ffa500;">Framwork <br />&nbsp;*</span><span style="color: Blue;"> @Author </span><span style="color: #ffa500;">ieliwb&nbsp; &nbsp; &lt;</span><span style="color: Blue;">ieliwb@gmail.com</span><span style="color: #ffa500;">&gt;<br />&nbsp;*</span><span style="color: Blue;"> @Copyright </span><span style="color: #ffa500;">(c)</span><span style="color: Blue;"> www.ieliwb.com</span><span style="color: #ffa500;"><br />&nbsp;+------------------------------------------------------------------------------<br />&nbsp;*/</span><span style="color: Gray;"><br /></span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">UMD</span><span style="color: Gray;"><br /></span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$bookinfo</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">id</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Maroon;">0</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">title</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">umd book</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">author</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">unknow</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">year</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">month</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">day</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">sort</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">default</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">publisher</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> =&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ChinaPub</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">seller</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DIY_GENERATED</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">cover</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;=&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$chapters</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$chaptercount</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$articlelen</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$chaptitlelen</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$charset</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">GBK</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: #00008b;">$handle</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">__construct</span><span style="color: Olive;">()</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">year</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Y</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">month</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">n</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">day</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">j</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 设置书籍编码<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $charset<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">setCharset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$charset</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$charset</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 设置添加书籍头信息<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Array $bookinfo<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">addBookInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$bookinfo</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">())</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$value</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">isset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$bookinfo</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$bookinfo</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: #00008b;">$key</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">id</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UCS</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UCS-2LE//IGNORE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #00008b;">$key</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 设置添加章节<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $c_title<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $c_content<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">addChapter</span><span style="color: Olive;">(</span><span style="color: #00008b;">$c_title</span><span style="color: Gray;">,</span><span style="color: #00008b;">$c_content</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UCS</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$c_title</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UCS-2LE//IGNORE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #00008b;">$c_title</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$c_content</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">charset</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UCS-2LE//IGNORE</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">str_replace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\r</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">,</span><span style="color: #00008b;">$c_content</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chapters</span><span style="color: Olive;">[</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">title</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$c_title</span><span style="color: Gray;">,<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$c_content</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptitlelen</span><span style="color: Gray;"> += </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$c_title</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">articlelen</span><span style="color: Gray;"> += </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$c_content</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 写入简介及其他相关信息<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $string<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Int $node<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @return </span><span style="color: #ffa500;">String<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$string</span><span style="color: Gray;">,</span><span style="color: #00008b;">$node</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;">&nbsp; = </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">35</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$node</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$string</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: Maroon;">5</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$string</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$data</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 十进制转十六进制<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $string<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Int $length<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @return </span><span style="color: #ffa500;">String<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$string</span><span style="color: Gray;">,</span><span style="color: #00008b;">$length</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$length</span><span style="color: Gray;"> *= </span><span style="color: Maroon;">2</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$c_string</span><span style="color: Gray;"> = </span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: Blue;">sprintf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: #00008b;">$length</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Blue;">dechex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$string</span><span style="color: Olive;">))</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Gray;"> - </span><span style="color: #00008b;">$length</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> &lt; </span><span style="color: #00008b;">$length</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> += </span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Blue;">hexdec</span><span style="color: Olive;">(</span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$c_string</span><span style="color: Gray;">,</span><span style="color: #00008b;">$i</span><span style="color: Gray;">,</span><span style="color: Maroon;">2</span><span style="color: Olive;">)))</span><span style="color: Gray;">.</span><span style="color: #00008b;">$data</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$data</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 写入章节偏移量<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Int $fontSize<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Int $screenWidth<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">Int $PID<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fontSize</span><span style="color: Gray;">,</span><span style="color: #00008b;">$screenWidth</span><span style="color: Gray;">,</span><span style="color: #00008b;">$PID</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$h</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">28672</span><span style="color: Gray;">,</span><span style="color: Maroon;">32767</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$content_len</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">articlelen</span><span style="color: Gray;"> + </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Gray;"> * </span><span style="color: Maroon;">2</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2387</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">n</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #00008b;">$PID</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x0B</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fontSize</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$screenWidth</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$h</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">36</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$h</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">17</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$content_len</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//$data .= $this-&gt;dec2hex(floor($content_len / 2),4);</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">unset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: #ffa500;">/**<br />&nbsp;&nbsp; &nbsp; * 编译生成UMD<br />&nbsp;&nbsp; &nbsp; *<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">String $filename<br />&nbsp;&nbsp; &nbsp; *</span><span style="color: Blue;"> @return </span><span style="color: #ffa500;">Boolean<br />&nbsp;&nbsp; &nbsp; */</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">makeUmd</span><span style="color: Olive;">(</span><span style="color: #00008b;">$filename</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;"> = </span><span style="color: Blue;">fopen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$filename</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">wb</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">false</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">flock</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: Blue;">LOCK_EX</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;">&nbsp; = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">899B9ADE</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//头 umd文件标志</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">230100000801</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x01--文件开始</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">1025</span><span style="color: Gray;">,</span><span style="color: Maroon;">32767</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x02--标题</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">author</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">3</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x03--作者</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">year</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x04--年</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">month</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">5</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x05--月</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">day</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">6</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x06--日</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">sort</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">7</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x07--小说类型</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">publisher</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">8</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//0x08--出版商</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeInfo</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">seller</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">9</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//0x09--零售商</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x0b--内容长度</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">230B000009</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">articlelen</span><span style="color: Gray;"> + </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Gray;"> * </span><span style="color: Maroon;">2</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x83--章节偏移 写入章节数</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2383000109</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">12288</span><span style="color: Gray;">,</span><span style="color: Maroon;">16383</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">24</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Gray;"> * </span><span style="color: Maroon;">4</span><span style="color: Gray;"> + </span><span style="color: Maroon;">9</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$chapteroffset</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chapters</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$value</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$chapteroffset</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$chapteroffset</span><span style="color: Gray;"> += </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$value</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">content</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;"> + </span><span style="color: Maroon;">2</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x84--章节标题，正文</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2384000109</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">16384</span><span style="color: Gray;">,</span><span style="color: Maroon;">20479</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">24</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">9</span><span style="color: Gray;"> + </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptitlelen</span><span style="color: Gray;"> + </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chaptercount</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chapters</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$value</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$value</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$value</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">title</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$ss</span><span style="color: Gray;">&nbsp; = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$oo</span><span style="color: Gray;"> = </span><span style="color: Maroon;">32768</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$chapstr</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">chapters</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$value</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$chapstr</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$value</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">content</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">41</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">32</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$chap_len</span><span style="color: Gray;"> = </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$chapstr</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$maximum</span><span style="color: Gray;"> = </span><span style="color: Blue;">ceil</span><span style="color: Olive;">(</span><span style="color: #00008b;">$chap_len</span><span style="color: Gray;"> / </span><span style="color: #00008b;">$oo</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$num_1</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #00008b;">$maximum</span><span style="color: Gray;"> - </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$num_2</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">0</span><span style="color: Gray;">,</span><span style="color: #00008b;">$maximum</span><span style="color: Gray;"> - </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$aa</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> &lt; </span><span style="color: #00008b;">$maximum</span><span style="color: Gray;">;++</span><span style="color: #00008b;">$i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">36</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$numrand</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">4.02653</span><span style="color: Blue;">e</span><span style="color: Gray;">+</span><span style="color: Maroon;">009</span><span style="color: Gray;">,</span><span style="color: Maroon;">4.29497</span><span style="color: Blue;">e</span><span style="color: Gray;">+</span><span style="color: Maroon;">009</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$aa</span><span style="color: Olive;">[</span><span style="color: #00008b;">$i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$numrand</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$numrand</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$c_chapstr</span><span style="color: Gray;"> = </span><span style="color: Blue;">substr</span><span style="color: Olive;">(</span><span style="color: #00008b;">$chapstr</span><span style="color: Gray;">,</span><span style="color: #00008b;">$ss</span><span style="color: Gray;">,</span><span style="color: #00008b;">$oo</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$ss</span><span style="color: Gray;"> += </span><span style="color: #00008b;">$oo</span><span style="color: Gray;"> ;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$z_chapstr</span><span style="color: Gray;"> = </span><span style="color: Blue;">gzcompress</span><span style="color: Olive;">(</span><span style="color: #00008b;">$c_chapstr</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">9</span><span style="color: Gray;"> + </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$z_chapstr</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$z_chapstr</span><span style="color: Gray;"> ;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> == </span><span style="color: #00008b;">$num_1</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">23F100001500000000000000000000000000000000</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> == </span><span style="color: #00008b;">$num_2</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">230A000009</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">id</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> + </span><span style="color: Maroon;">268435456</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x81--正文写入完毕</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">2381000109</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">8192</span><span style="color: Gray;">,</span><span style="color: Maroon;">12287</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">36</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">9</span><span style="color: Gray;"> + </span><span style="color: #00008b;">$maximum</span><span style="color: Gray;"> * </span><span style="color: Maroon;">4</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span><span style="color: #00008b;">$i</span><span style="color: Gray;"> &lt; </span><span style="color: #00008b;">$maximum</span><span style="color: Gray;">;++</span><span style="color: #00008b;">$i</span><span style="color: Olive;">)</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$aa</span><span style="color: Olive;">[</span><span style="color: #00008b;">$i</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x82--封面</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Green;">empty</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">cover</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;"> || </span><span style="color: Blue;">is_file</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">cover</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]))</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">238200011001</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">mt_rand</span><span style="color: Olive;">(</span><span style="color: Maroon;">4096</span><span style="color: Gray;">,</span><span style="color: Maroon;">8191</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">chr</span><span style="color: Olive;">(</span><span style="color: Maroon;">36</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$coverstream</span><span style="color: Gray;"> = </span><span style="color: Blue;">file_get_contents</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">bookinfo</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">cover</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$coverstream</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: Maroon;">9</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$coverstream</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x87--PageOffset</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x10</span><span style="color: Gray;">,</span><span style="color: Maroon;">0xD0</span><span style="color: Gray;">,</span><span style="color: Maroon;">0x01</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x10</span><span style="color: Gray;">,</span><span style="color: Maroon;">0xB0</span><span style="color: Gray;">,</span><span style="color: Maroon;">0x01</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x0C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0xD0</span><span style="color: Gray;">,</span><span style="color: Maroon;">0x01</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x0C</span><span style="color: Gray;">,</span><span style="color: Maroon;">0xB0</span><span style="color: Gray;">,</span><span style="color: Maroon;">0x01</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">writePageOffset</span><span style="color: Olive;">(</span><span style="color: Maroon;">0x0A</span><span style="color: Gray;">,</span><span style="color: Maroon;">0xA6</span><span style="color: Gray;">,</span><span style="color: Maroon;">0x05</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">//0x0c--文件结束</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: Blue;">pack</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">H*</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">230C000109</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$random</span><span style="color: Gray;"> = </span><span style="color: Maroon;">4</span><span style="color: Gray;"> + </span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: Blue;">ftell</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #00008b;">$data</span><span style="color: Gray;"> .= </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">dec2hex</span><span style="color: Olive;">(</span><span style="color: #00008b;">$random</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: #00008b;">$data</span><span style="color: Gray;">,</span><span style="color: Blue;">strlen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">unset</span><span style="color: Olive;">(</span><span style="color: #00008b;">$data</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">flock</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Gray;">,</span><span style="color: Blue;">LOCK_UN</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Blue;">fclose</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">handle</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;@</span><span style="color: Blue;">chmod</span><span style="color: Olive;">(</span><span style="color: #00008b;">$filename</span><span style="color: Gray;">,</span><span style="color: Maroon;">0755</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">true</span><span style="color: Gray;">;<br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br /></span><span style="color: Olive;">}</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: #ffa500;">//test</span><span style="color: Gray;"><br /></span><span style="color: #00008b;">$umd</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">UMD</span><span style="color: Olive;">()</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$umd</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">addBookInfo</span><span style="color: Olive;">(</span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">title</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: #8b0000;">'</span><span style="color: Red;">测试umd生成</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$umd</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">addChapter</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">第一章</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">内容1111111111111111111111111111111111111</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$umd</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">addChapter</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">第二章</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">内容22222222222222222222222222222222222222222</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: #00008b;">$umd</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">makeUmd</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">aaa.umd</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br />&nbsp;<br /></span><span style="color: Blue;">?&gt;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ieliwb.com/umd-txt-php/feed/</wfw:commentRss>
		<slash:comments>960</slash:comments>
		</item>
	</channel>
</rss>

