<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.flyblog.info/styles/feedsky0.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" 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/" version="2.0"><channel><atom:link href="http://feed.flyblog.info" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/flyblogInfo" type="application/rss+xml"></fs:self_link><lastBuildDate>Thu, 15 Oct 2009 01:27:25 GMT</lastBuildDate><title>Flyblog</title><description>记录我的程序人生</description><link>http://www.flyblog.info</link><language>en</language><pubDate>Fri, 16 Oct 2009 16:27:44 GMT</pubDate><item><title>升级到 iDeneb 10.5.8，并解决xcode调试断点问题</title><link>http://www.flyblog.info/catprogramming/403.html</link><content:encoded>&lt;div&gt;
&lt;p&gt;Snow Leopard正式版已经发布有一段时间了，看了一下iHackintosh的介绍，升级到Snow Leopard需要一块新的硬盘，作罢。 今天抽空将iDeneb系统升级到10.5.8， 升级过程非常简单，如果已经是10.5.7系统就下载官方更新包&lt;a href=&quot;http://www.ihackintosh.com/2009/08/download-mac-os-x-1058-software-update/&quot;&gt;Delta update&lt;/a&gt;（274MB)， 如果是低版本则下载&lt;a href=&quot;http://www.ihackintosh.com/2009/08/download-mac-os-x-1058-software-update/&quot;&gt;Combo update&lt;/a&gt;（759MB)。 在升级之前，还需要下载&lt;a href=&quot;http://osx86tools.googlecode.com/files/OSX86Tools_1.0.150.zip&quot;&gt;osx86tools&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;在升级之前还需要注意的是备份kext驱动程序， 每次改动之前都做备份是个很好的习惯。 然后按照下面的步骤进行升级，&lt;/p&gt;
&lt;p&gt;1. 下载并安装 &lt;a href=&quot;http://forum.insanelymac.com/index.php?act=attach&amp;amp;type=post&amp;amp;id=41446&quot; target=&quot;_blank&quot;&gt;Disabler.kext &lt;/a&gt; （如果是用osx86tools安装，切记不要重新启动）&lt;/p&gt;
&lt;p&gt;2. 下载并安装 &lt;a href=&quot;http://rapidshare.de/files/48042786/dsmos.kext.zip.html&quot; target=&quot;_blank&quot;&gt;dsmos.kext&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. 重新启动系统&lt;/p&gt;
&lt;p&gt;4. 备份所有的kext， 以便出错后恢复&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;sudo cp -rf /System/Library/Extensions /System/Library/Extensions_old&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;5. 打开下载的官方升级程序， 成功后会看到安装成功，是否重新启动的页面，&lt;strong&gt;此时不要重新启动，&lt;/strong&gt;直接进行下一步&lt;/p&gt;
&lt;p&gt;6. 运行 osx86tools， 勾选Check repair permissions ， Set kext permissions ， Clear extensions cache 三项， 然后点击“Run selected tasks&amp;#8221;,安装结束会提示重新启动，如果没重启就自己重启系统&lt;/p&gt;
&lt;p&gt;在启动时输入参数 －v 查看出错信息，如果一切正常则升级成功。&lt;/p&gt;
&lt;p&gt;关于xcode调试时断点不停的问题， 新的voodoo内核虽然解决了断点问题， 但是不能进行step over 和step in等详细调试操作， 网上有人说在启动时输入启动参数： std_dyld=1，我试过但没有用， 做好发现输入参数还需要添加几项，正确的参数应该为：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;busratio=20 cpus=1 std_dyld=1&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这样在xcode中调试时，断点就可以正常工作了， 而且可以进行step over 等调试操作&lt;/p&gt;&lt;/div&gt;


&lt;p&gt;No related posts.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742125/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/403.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742125/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742125/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/403.html/feed</wfw:commentRss><description>Snow Leopard正式版已经发布有一段时间了，看了一下iHackintosh的介绍，升级到Snow Leopard需要一块新的硬盘，作罢。 今天抽空将iDeneb系统升级到10.5.8， 升级过程非常简单，如果已经是10.5.7系统就下载官方更新包Delta update（274MB)， 如果是低版本则下载Combo update（759MB)。 在升级之前，还需要下载osx86tools。


No related posts.&lt;img src=&quot;http://www1.feedsky.com/t1/283742125/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/403.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742125/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742125/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>XCode</category><category>编程开发</category><category>断点</category><category>iDeneb 10.5.8</category><pubDate>Thu, 15 Oct 2009 09:27:25 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/403.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=403</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/403.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742125/4913920</fs:itemid></item><item><title>根据经纬度计算两点之间的距离代码</title><link>http://www.flyblog.info/catprogramming/400.html</link><content:encoded>&lt;p&gt;今天看到cocoachina有人问起这个问题， 正好把好久以前的一段代码发了上来， 这段代码已经经过验证，精度还是可以保障的， 对于不同的应用需要更换调整地球半径值 ，先看代码&lt;span id=&quot;more-400&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader wp_codebox_hide&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:showCodeTxt('p400code2'); return false;&quot;&gt;View Code&lt;/a&gt; OBJC&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p4002&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p400code2&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #6e371a;&quot;&gt;#define PI 3.1415926&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; LantitudeLongitudeDist&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; lon1,&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; lat1,
							  &lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; lon2,&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; lat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;6378137&lt;/span&gt;; &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// 6378700.0f;&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//ave. radius = 6371.315 (someone said more accurate is 6366.707)&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//equatorial radius = 6378.388&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//nautical mile = 1.15078&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; radlat1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;lat1&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;180.0f;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; radlat2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;lat2&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;180.0f;
&amp;nbsp;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//now long.&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; radlong1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;lon1&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;180.0f;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; radlong2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;lon2&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;180.0f;
&amp;nbsp;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlat1 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlat1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// south&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlat1 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlat1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// north&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlong1 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlong1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//west&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlat2 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlat2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// south&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlat2 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlat2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// north&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt; radlong2 &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; radlong2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; PI&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;fabs&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// west&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//spherical coordinates x=r*cos(ag)sin(at), y=r*sin(ag)*sin(at), z=r*cos(at)&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//zero ag is up so reverse lat&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; x1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;cos&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; y1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; z1 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;cos&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat1&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; x2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;cos&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; y2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlong2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sin&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; z2 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; er &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;cos&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;radlat2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; d &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;sqrt&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;x1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;x2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;x1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;x2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;y1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;y2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;y1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;y2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;z1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;z2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;z1&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;z2&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//side, side, side, law of cosines and arccos&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; theta &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;acos&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;d&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;d&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;er&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;double&lt;/span&gt; dist  &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theta&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;er;
&amp;nbsp;
	&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; dist;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;其中er 就是地球椭球半径，对于google map使用 6378137 就可以了。 函数的调用非常简单， 几乎使用任何平台:)&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/175.html' rel='bookmark' title='Permanent Link: 下载google maps地图'&gt;下载google maps地图&lt;/a&gt; &lt;small&gt;最近在写一个iPhone上的程序， 其中用到了google maps， 最简单的做法是在程序中嵌入一个UIWebView然后加载一个网页，在网页中写上一段javascript并包含google maps 地图对象即可， 这样的做法简单但有很大的弊端。 主要是效率以及稳定性的问题， UIWebView似乎是缓存了很多文件， 而又没有开放的接口用于释放清除这些缓存内容，这就导致程序可使用内存越来越小，直至崩溃，尤其是如果要同时使用UIImagePickerController那就更严重。...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742126/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/400.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742126/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742126/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/400.html/feed</wfw:commentRss><description>今天看到cocoachina有人问起这个问题， 正好把好久以前的一段代码发了上来， 这段代码已经经过验证，精度还是可以保障的， 对于不同的应用需要更换调整地球半径值 ，先看代码

?View Code OBJC1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#define PI 3.1415926
&amp;#160;
double LantitudeLongitudeDist&amp;#40;double lon1,double lat1,
							  double lon2,double lat2&amp;#41;
&amp;#123;
	double er = 6378137; // 6378700.0f;
	//ave. radius = 6371.315 (someone said more accurate is 6366.707)
	//equatorial radius = 6378.388
	//nautical mile = 1.15078
	double radlat1 = PI*lat1/180.0f;
	double radlat2 = PI*lat2/180.0f;
&amp;#160;
	//now long.
	double radlong1 = PI*lon1/180.0f;
	double radlong2 = PI*lon2/180.0f;
&amp;#160;
	if&amp;#40; radlat1 &amp;#38;lt; 0 &amp;#41; radlat1 = [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/175.html' rel='bookmark' title='Permanent Link: 下载google maps地图'&gt;下载google maps地图&lt;/a&gt; &lt;small&gt;最近在写一个iPhone上的程序， 其中用到了google maps， 最简单的做法是在程序中嵌入一个UIWebView然后加载一个网页，在网页中写上一段javascript并包含google maps 地图对象即可， 这样的做法简单但有很大的弊端。 主要是效率以及稳定性的问题， UIWebView似乎是缓存了很多文件， 而又没有开放的接口用于释放清除这些缓存内容，这就导致程序可使用内存越来越小，直至崩溃，尤其是如果要同时使用UIImagePickerController那就更严重。...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;

Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;img src=&quot;http://www1.feedsky.com/t1/283742126/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/400.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742126/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742126/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>经纬度</category><category>距离</category><category>编程开发</category><category>代码</category><pubDate>Thu, 10 Sep 2009 15:40:18 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/400.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=400</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/400.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742126/4913920</fs:itemid></item><item><title>8月最新namecheap的打折代码coupon code</title><link>http://www.flyblog.info/catinternet/396.html</link><content:encoded>&lt;p&gt;August Coupon Code&lt;/p&gt;
&lt;p&gt;August’s coupon code for new domains is &lt;strong&gt;SOLARSEA&lt;/strong&gt;.  Save money on all your new domains at our website and don’t forget to pass this coupon code on to your friends so they can save money on their domains as well.&lt;/p&gt;
&lt;p&gt;And as always, thank you for using NameCheap! &lt;/p&gt;
&lt;p&gt;8月最新的namecheap的coupon code ： &lt;strong&gt;SOLARSEA&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catinternet/37.html' rel='bookmark' title='Permanent Link: namecheap免费DDNS服务'&gt;namecheap免费DDNS服务&lt;/a&gt; &lt;small&gt;namecheap是美国域名注册商现已成和godaddy一样的顶级域名注册商， 经过多年使用感觉服务非常好。如果你使用namecheap注册域名namecheap将免费提供动态域名解析服务即DDNS， 如果你需要在自己家中或者在内网暂时性的建立网站而又苦于没有固定IP得话，那么DDNS动态域名就是非常好得解决问题的途径， ...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742127/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catinternet/396.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742127/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742127/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catinternet/396.html/feed</wfw:commentRss><description>August Coupon Code
August’s coupon code for new domains is SOLARSEA.  Save money on all your new domains at our website and don’t forget to pass this coupon code on to your friends so they can save money on their domains as well.
And as always, thank you for using NameCheap! 
8月最新的namecheap的coupon code ： SOLARSEA.


Related posts:namecheap免费DDNS服务 [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catinternet/37.html' rel='bookmark' title='Permanent Link: namecheap免费DDNS服务'&gt;namecheap免费DDNS服务&lt;/a&gt; &lt;small&gt;namecheap是美国域名注册商现已成和godaddy一样的顶级域名注册商， 经过多年使用感觉服务非常好。如果你使用namecheap注册域名namecheap将免费提供动态域名解析服务即DDNS， 如果你需要在自己家中或者在内网暂时性的建立网站而又苦于没有固定IP得话，那么DDNS动态域名就是非常好得解决问题的途径， ...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;

Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;img src=&quot;http://www1.feedsky.com/t1/283742127/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catinternet/396.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742127/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742127/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>互联网络</category><category>折扣</category><category>namecheap</category><category>域名注册</category><category>打折代码</category><pubDate>Tue, 18 Aug 2009 09:21:39 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catinternet/396.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=396</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catinternet/396.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742127/4913920</fs:itemid></item><item><title>iPhone SDK开发： 如何上传图片文件到服务器</title><link>http://www.flyblog.info/catprogramming/392.html</link><content:encoded>&lt;p&gt;现成的代码， 如果不想压缩，可以去掉zlib &lt;span id=&quot;more-392&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;头文件&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader wp_codebox_hide&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:showCodeTxt('p392code6'); return false;&quot;&gt;View Code&lt;/a&gt; OBJC&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p3926&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p392code6&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;@interface&lt;/span&gt; EPUploader &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #400080;&quot;&gt;NSObject&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;serverURL;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;filePath;
    &lt;span style=&quot;color: #a61390;&quot;&gt;id&lt;/span&gt; delegate;
    &lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt; doneSelector;
    &lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt; errorSelector;
&amp;nbsp;
    &lt;span style=&quot;color: #a61390;&quot;&gt;BOOL&lt;/span&gt; uploadDidSucceed;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;   &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;initWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;serverURL
        filePath&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;filePath
        delegate&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;delegate
        doneSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;doneSelector
        errorSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;errorSelector;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;   &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;filePath;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@end&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;实现文件&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader wp_codebox_hide&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:showCodeTxt('p392code7'); return false;&quot;&gt;View Code&lt;/a&gt; OBJC&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p3927&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p392code7&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #6e371a;&quot;&gt;#import &amp;quot;EPUploader.h&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #6e371a;&quot;&gt;#import &lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; BOUNDRY &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;0xKhTmLbOuNdArY&amp;quot;&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; FORM_FLE_INPUT &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;uploaded&amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #6e371a;&quot;&gt;#define ASSERT(x) NSAssert(x, @&amp;quot;&amp;quot;)&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@interface&lt;/span&gt; EPUploader &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;Private&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;upload;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLRequest&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;postRequestWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;url
                             boundry&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;boundry
                                data&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;data;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;compress&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;data;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;BOOL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;success;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connectionDidFinishLoading&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@end&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@implementation&lt;/span&gt; EPUploader
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader initWithURL:filePath:delegate:doneSelector:errorSelector:] --
 *
 *      Initializer. Kicks off the upload. Note that upload will happen on a
 *      separate thread.
 *
 * Results:
 *      An instance of Uploader.
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;initWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;aServerURL   &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
         filePath&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;aFilePath &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
         delegate&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;aDelegate         &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
     doneSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;aDoneSelector    &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
    errorSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;SEL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;anErrorSelector  &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;self &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;super init&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;aServerURL&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
        ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;aFilePath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
        ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;aDelegate&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
        ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;aDoneSelector&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
        ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;anErrorSelector&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        serverURL &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;aServerURL retain&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        filePath &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;aFilePath retain&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        delegate &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;aDelegate retain&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        doneSelector &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; aDoneSelector;
        errorSelector &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; anErrorSelector;
&amp;nbsp;
        &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self upload&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; self;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader dealloc] --
 *
 *      Destructor.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;dealloc
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;serverURL release&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    serverURL &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;nil&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;filePath release&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    filePath &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;nil&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;delegate release&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    delegate &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;nil&lt;/span&gt;;
    doneSelector &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;NULL&lt;/span&gt;;
    errorSelector &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;NULL&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;super dealloc&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader filePath] --
 *
 *      Gets the path of the file this object is uploading.
 *
 * Results:
 *      Path to the upload file.
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;filePath
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; filePath;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@end&lt;/span&gt; &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// Uploader&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@implementation&lt;/span&gt; EPUploader &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;Private&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) upload] --
 *
 *      Uploads the given file. The file is compressed before beign uploaded.
 *      The data is uploaded using an HTTP POST command.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;upload
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;data &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; dataWithContentsOfFile&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;filePath&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    ASSERT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;!&lt;/span&gt;data&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;NO&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data length&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// There's no data, treat this the same as no file.&lt;/span&gt;
        &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;YES&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//  NSData *compressedData = [self compress:data];&lt;/span&gt;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//  ASSERT(compressedData &amp;amp;amp;&amp;amp;amp; [compressedData length] != 0);&lt;/span&gt;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//  if (!compressedData || [compressedData length] == 0) {&lt;/span&gt;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//      [self uploadSucceeded:NO];&lt;/span&gt;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//      return;&lt;/span&gt;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//  }&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSURLRequest&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;urlRequest &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self postRequestWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;serverURL
                                                                                        boundry&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;BOUNDRY
                                                                                           data&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;data&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;!&lt;/span&gt;urlRequest&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;NO&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
        &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; connection &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; alloc&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; initWithRequest&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;urlRequest delegate&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;self&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;!&lt;/span&gt;connection&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;NO&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// Now wait for the URL connection to call us back.&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) postRequestWithURL:boundry:data:] --
 *
 *      Creates a HTML POST request.
 *
 * Results:
 *      The HTML POST request.
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLRequest&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;postRequestWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;url        &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
                             boundry&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;boundry &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
                                data&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;data      &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// from http://www.cocoadev.com/index.pl?HTTPFileUpload&lt;/span&gt;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSMutableURLRequest&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;urlRequest &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSMutableURLRequest&lt;/span&gt; requestWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;url&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;urlRequest setHTTPMethod&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;urlRequest setValue&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;
     &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; stringWithFormat&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;multipart/form-data; boundary=%@&amp;quot;&lt;/span&gt;, boundry&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;
      forHTTPHeaderField&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSMutableData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;postData &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSMutableData&lt;/span&gt; dataWithCapacity&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data length&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;512&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;postData appendData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;
     &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; stringWithFormat&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;--%@&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, boundry&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; dataUsingEncoding&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;NSUTF8StringEncoding&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;postData appendData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;
     &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; stringWithFormat&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;
       &lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;Content-Disposition: form-data; name=&lt;span style=&quot;color: #2400d9;&quot;&gt;\&amp;quot;&lt;/span&gt;%@&lt;span style=&quot;color: #2400d9;&quot;&gt;\&amp;quot;&lt;/span&gt;; filename=&lt;span style=&quot;color: #2400d9;&quot;&gt;\&amp;quot;&lt;/span&gt;file.bin&lt;span style=&quot;color: #2400d9;&quot;&gt;\&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, FORM_FLE_INPUT&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;
      dataUsingEncoding&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;NSUTF8StringEncoding&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;postData appendData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;data&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;postData appendData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;
     &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; stringWithFormat&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;--%@--&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, boundry&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; dataUsingEncoding&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;NSUTF8StringEncoding&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;urlRequest setHTTPBody&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;postData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; urlRequest;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) compress:] --
 *
 *      Uses zlib to compress the given data.
 *
 * Results:
 *      The compressed data as a NSData object.
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;compress&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;data &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;!&lt;/span&gt;data || &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data length&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;nil&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// zlib compress doc says destSize must be 1% + 12 bytes greater than source.&lt;/span&gt;
    uLong destSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data length&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1.001&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;12&lt;/span&gt;;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSMutableData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;destData &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSMutableData&lt;/span&gt; dataWithLength&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;destSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #a61390;&quot;&gt;int&lt;/span&gt; error &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; compress&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;destData mutableBytes&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;,
                                         &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt;amp;destSize,
                                         &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data bytes&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;,
                                         &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;data length&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;error &lt;span style=&quot;color: #002200;&quot;&gt;!=&lt;/span&gt; Z_OK&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: self:0x%p, zlib error on compress:%d&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;,__func__, self, error&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;nil&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;destData setLength&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;destSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt; destData;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) uploadSucceeded:] --
 *
 *      Used to notify the delegate that the upload did or did not succeed.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;BOOL&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;success &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;delegate performSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;success ? doneSelector &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; errorSelector
                           withObject&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;self&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) connectionDidFinishLoading:] --
 *
 *      Called when the upload is complete. We judge the success of the upload
 *      based on the reply we get from the server.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connectionDidFinishLoading&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: self:0x%p&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, __func__, self&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;connection release&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;uploadDidSucceed&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) connection:didFailWithError:] --
 *
 *      Called when the upload failed (probably due to a lack of network
 *      connection).
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
  didFailWithError&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSError&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;error              &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: self:0x%p, connection error:%s&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;,
                __func__, self, &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;error description&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; UTF8String&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;connection release&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;self uploadSucceeded&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;NO&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) connection:didReceiveResponse:] --
 *
 *      Called as we get responses from the server.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;       connection&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
      didReceiveResponse&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLResponse&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;response     &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: self:0x%p&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, __func__, self&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
 *-----------------------------------------------------------------------------
 *
 * -[Uploader(Private) connection:didReceiveData:] --
 *
 *      Called when we have data from the server. We expect the server to reply
 *      with a &amp;quot;YES&amp;quot; if the upload succeeded or &amp;quot;NO&amp;quot; if it did not.
 *
 * Results:
 *      None
 *
 * Side effects:
 *      None
 *
 *-----------------------------------------------------------------------------
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURLConnection&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;connection &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
    didReceiveData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSData&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;data                &lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;// IN&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
    NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: self:0x%p&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, __func__, self&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;reply &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSString&lt;/span&gt; alloc&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; initWithData&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;data
                                                                                 encoding&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;NSUTF8StringEncoding&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;
                                   autorelease&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
    NSLog&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;%s: data: %s&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;, __func__, &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;reply UTF8String&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;reply hasPrefix&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;YES&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
        uploadDidSucceed &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;YES&lt;/span&gt;;
    &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;@end&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;使用方法&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader wp_codebox_hide&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:showCodeTxt('p392code8'); return false;&quot;&gt;View Code&lt;/a&gt; OBJC&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p3928&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p392code8&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;EPUploader alloc&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; initWithURL&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #400080;&quot;&gt;NSURL&lt;/span&gt; URLWithString&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;http://yourserver.com/uploadDB.php&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;
		filePath&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: #bf1d1a;&quot;&gt;&amp;quot;path/to/some/file&amp;quot;&lt;/span&gt;
		delegate&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;self
		doneSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;@selector&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;onUploadDone&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		errorSelector&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;@selector&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;onUploadError&lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;



&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/251.html' rel='bookmark' title='Permanent Link: UIWebView 显示本地html及引用资源'&gt;UIWebView 显示本地html及引用资源&lt;/a&gt; &lt;small&gt;有些软件中可能会用到html页面，比如用在做帮助页面或者其它相关信息时。 这种情况下只需要将html页面文件以及索引用到的资源（图片、声音等） 都加入到bundle中，或者单独创建一个bundle， 在需要的时候调用UIWebView的相关方法即可...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/258.html' rel='bookmark' title='Permanent Link: iPhone SDK开发：改变UISWitch文本和颜色'&gt;iPhone SDK开发：改变UISWitch文本和颜色&lt;/a&gt; &lt;small&gt;iPhone SDK中的Switch控件默认的文本为 ON OFF两种，不同的语言显示不同， 颜色均为蓝色和亮灰色，如图 如果想改变ON，OFF文本，我们必须重从UISwitch继承一个新类， 然后在新的Switch类中修改替换原有的View...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/157.html' rel='bookmark' title='Permanent Link: iPhone开发之Objective-C学习(3)'&gt;iPhone开发之Objective-C学习(3)&lt;/a&gt; &lt;small&gt;到现在为止，已经学习了如何调用类方法以及创建对象。 到目前为止我们还没有看到如何才能定义一个类， 上两次的内容已经多次涉及到类及类的成员，现在我们可以学习一下如何才能定义一个自己的类。 设计一个类（接口） 一般来讲创建一个类需要两部分，首先是申明类的头文件ClassName.h， 还有类实现的源文件ClassName.m， 如果你想在程序中混合C/C++编程那么就需要使用.mm或者.M ，这样编译器会以此判断该类中混合了Objective-C 和 C语言...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742128/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/392.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742128/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742128/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/392.html/feed</wfw:commentRss><description>现成的代码， 如果不想压缩，可以去掉zlib 
头文件

?View Code OBJC1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@interface EPUploader : NSObject &amp;#123;
    NSURL *serverURL;
    NSString *filePath;
    id delegate;
    SEL doneSelector;
    SEL errorSelector;
&amp;#160;
    BOOL uploadDidSucceed;
&amp;#125;
&amp;#160;
-   &amp;#40;id&amp;#41;initWithURL: &amp;#40;NSURL *&amp;#41;serverURL
        filePath: &amp;#40;NSString *&amp;#41;filePath
  [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/251.html' rel='bookmark' title='Permanent Link: UIWebView 显示本地html及引用资源'&gt;UIWebView 显示本地html及引用资源&lt;/a&gt; &lt;small&gt;有些软件中可能会用到html页面，比如用在做帮助页面或者其它相关信息时。 这种情况下只需要将html页面文件以及索引用到的资源（图片、声音等） 都加入到bundle中，或者单独创建一个bundle， 在需要的时候调用UIWebView的相关方法即可...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/258.html' rel='bookmark' title='Permanent Link: iPhone SDK开发：改变UISWitch文本和颜色'&gt;iPhone SDK开发：改变UISWitch文本和颜色&lt;/a&gt; &lt;small&gt;iPhone SDK中的Switch控件默认的文本为 ON OFF两种，不同的语言显示不同， 颜色均为蓝色和亮灰色，如图 如果想改变ON，OFF文本，我们必须重从UISwitch继承一个新类， 然后在新的Switch类中修改替换原有的View...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/157.html' rel='bookmark' title='Permanent Link: iPhone开发之Objective-C学习(3)'&gt;iPhone开发之Objective-C学习(3)&lt;/a&gt; &lt;small&gt;到现在为止，已经学习了如何调用类方法以及创建对象。 到目前为止我们还没有看到如何才能定义一个类， 上两次的内容已经多次涉及到类及类的成员，现在我们可以学习一下如何才能定义一个自己的类。 设计一个类（接口） 一般来讲创建一个类需要两部分，首先是申明类的头文件ClassName.h， 还有类实现的源文件ClassName.m， 如果你想在程序中混合C/C++编程那么就需要使用.mm或者.M ，这样编译器会以此判断该类中混合了Objective-C 和 C语言...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;

Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;img src=&quot;http://www1.feedsky.com/t1/283742128/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/392.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742128/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742128/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>上传文件，upload picture</category><category>iPhone SDK</category><category>编程开发</category><category>to server</category><pubDate>Wed, 05 Aug 2009 10:54:44 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/392.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=392</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/392.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742128/4913920</fs:itemid></item><item><title>成功升级iDeneb 10.5.7</title><link>http://www.flyblog.info/catprogramming/386.html</link><content:encoded>&lt;p&gt;前几天说了， macbook硬盘几乎是要挂了， 所以想起了我闲置的pc。 一年前安装过iDeneb 10.5.6， 已经好久没有使用了。 这不，有得打开来暂时替代macbook的工作。偏偏事不随人愿， iPhone SDK3.0需要lepoard 10.5.7， 只好到iDeneb官网下载10.5.7的升级包了。&lt;/p&gt;
&lt;p&gt;这次的升级包是个combo， combo的意思是你可以从10.5.x任意版本升级， 无须从10.5.6升级，也就是说你可以直接从10.5.3或者10.5.5 升级到10.5.7. 由于包含的内容较多， 所以接近800MB大小， 官网网站有两个链接 ， 分别是用于下载 iDeneb.Combo.Upgrade.KIT.1057.dmg 和iDeneb.Tool.rev1.mpkg.zip， 但其实 iDeneb.Combo.Upgrade.KIT.1057.dmg中已经包含了iDeneb.Tool.rev1.mpkg， 所以只下一个就可以了&lt;/p&gt;
&lt;p&gt;iDeneb官网需要注册才能看见下载链接， 所以为了方便， 将下载链接放在这里&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.megaupload.com/?d=HSI0YY8E&quot;&gt;http://www.megaupload.com/?d=HSI0YY8E&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用迅雷下载也挺快的， 最高能达到100多kb&lt;/p&gt;
&lt;p&gt;下载完就可以升级了， 升级前最好备份一下自己的ext， 可以用OSX86Tools 进行备份， 很方便。&lt;/p&gt;
&lt;p&gt;打开dmg映像中的 iDeneb.MacOSx86UpdCombo10.5.7.pkg 进行安装，安装完不要重新启动，不要点击“Restart&amp;#8221;，这时候重启有可能进不去系统，白苹果了。&lt;/p&gt;
&lt;p&gt;然后直接运行iDeneb.Tool.rev1.mpkg， 选择内核，如图&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flyblog.info/wp-content/uploads/2009/07/updatetool.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-389&quot; title=&quot;updatetool&quot; src=&quot;http://www.flyblog.info/wp-content/uploads/2009/07/updatetool-300x212.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;212&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完后再点击“Restart”重新启动电脑，升级完毕。 可以享受一下MAC 10.5.7 了&lt;/p&gt;
&lt;p&gt;下面是升级后的关于信息的截图&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flyblog.info/wp-content/uploads/2009/07/about.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-390&quot; title=&quot;about&quot; src=&quot;http://www.flyblog.info/wp-content/uploads/2009/07/about-243x300.jpg&quot; alt=&quot;&quot; width=&quot;243&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742129/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/386.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742129/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742129/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/386.html/feed</wfw:commentRss><description>前几天说了， macbook硬盘几乎是要挂了， 所以想起了我闲置的pc。 一年前安装过iDeneb 10.5.6， 已经好久没有使用了。 这不，有得打开来暂时替代macbook的工作。偏偏事不随人愿， iPhone SDK3.0需要lepoard 10.5.7， 只好到iDeneb官网下载10.5.7的升级包了。
这次的升级包是个combo， combo的意思是你可以从10.5.x任意版本升级， 无须从10.5.6升级，也就是说你可以直接从10.5.3或者10.5.5 升级到10.5.7. 由于包含的内容较多， 所以接近800MB大小， 官网网站有两个链接 ， 分别是用于下载 iDeneb.Combo.Upgrade.KIT.1057.dmg 和iDeneb.Tool.rev1.mpkg.zip， 但其实 iDeneb.Combo.Upgrade.KIT.1057.dmg中已经包含了iDeneb.Tool.rev1.mpkg， 所以只下一个就可以了
iDeneb官网需要注册才能看见下载链接， 所以为了方便， 将下载链接放在这里
http://www.megaupload.com/?d=HSI0YY8E
用迅雷下载也挺快的， 最高能达到100多kb
下载完就可以升级了， 升级前最好备份一下自己的ext， 可以用OSX86Tools 进行备份， 很方便。
打开dmg映像中的 iDeneb.MacOSx86UpdCombo10.5.7.pkg 进行安装，安装完不要重新启动，不要点击“Restart&amp;#8221;，这时候重启有可能进不去系统，白苹果了。
然后直接运行iDeneb.Tool.rev1.mpkg， 选择内核，如图

安装完后再点击“Restart”重新启动电脑，升级完毕。 可以享受一下MAC 10.5.7 了
下面是升级后的关于信息的截图



No related posts.


No related posts.&lt;img src=&quot;http://www1.feedsky.com/t1/283742129/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/386.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742129/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742129/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>iPhone SDK</category><category>编程开发</category><category>10.5.7</category><category>iDeneb</category><pubDate>Thu, 23 Jul 2009 21:55:08 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/386.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=386</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/386.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742129/4913920</fs:itemid></item><item><title>MacBook 硬盘挂了</title><link>http://www.flyblog.info/catessay/384.html</link><content:encoded>&lt;p&gt;很不幸， MacBook的硬盘要挂了。 开机嘎啦嘎啦响个不停， 运行几分钟就莫名down机， 重新开机依然能进入系统， 但最多也就几分钟就又关机，偶尔还在大苹果的时候就断电歇息了。 经过几次实验， 发现时因为发热过猛， 散热效率太差导致，于是放在为hp买的摩天轮上，惊奇的是可以凑合运转，给于我充分的时间把重要内容和源代码拷出来， 这一次它却没有down， 看来还是散热问题， 不过硬盘的嘎啦声响已经不是什么好兆头。&lt;/p&gt;
&lt;p&gt;俗话说， 吃一堑，长一智。 总结经验如下：&lt;br /&gt;
1. 电脑用完后一定记得关机，也就是Shutdown。 不要用睡眠(sleep), 也不要指望系统设定的休眠，对硬盘损毁非常严重&lt;br /&gt;
2. 切勿长时间开机， 我的macbook基本上是不关机的， 估计是长时间运转导致寿命缩短&lt;br /&gt;
3. 注意MacBook的散热问题， 最好添置辅助散热器， 比如我说的摩天轮&lt;br /&gt;
4. 还是台式机好用啊:)&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742130/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catessay/384.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742130/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742130/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catessay/384.html/feed</wfw:commentRss><description>很不幸， MacBook的硬盘要挂了。 开机嘎啦嘎啦响个不停， 运行几分钟就莫名down机， 重新开机依然能进入系统， 但最多也就几分钟就又关机，偶尔还在大苹果的时候就断电歇息了。 经过几次实验， 发现时因为发热过猛， 散热效率太差导致，于是放在为hp买的摩天轮上，惊奇的是可以凑合运转，给于我充分的时间把重要内容和源代码拷出来， 这一次它却没有down， 看来还是散热问题， 不过硬盘的嘎啦声响已经不是什么好兆头。
俗话说， 吃一堑，长一智。 总结经验如下：
1. 电脑用完后一定记得关机，也就是Shutdown。 不要用睡眠(sleep), 也不要指望系统设定的休眠，对硬盘损毁非常严重
2. 切勿长时间开机， 我的macbook基本上是不关机的， 估计是长时间运转导致寿命缩短
3. 注意MacBook的散热问题， 最好添置辅助散热器， 比如我说的摩天轮
4. 还是台式机好用啊:)


No related posts.


No related posts.&lt;img src=&quot;http://www1.feedsky.com/t1/283742130/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catessay/384.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742130/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742130/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>心情随笔</category><category>macbook</category><pubDate>Wed, 22 Jul 2009 09:39:54 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catessay/384.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=384</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catessay/384.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742130/4913920</fs:itemid></item><item><title>好些日子没更新了</title><link>http://www.flyblog.info/catessay/382.html</link><content:encoded>&lt;p&gt;又是好久没更新了，不是懒惰，是因为每每想写点什么的时候却又不知写什么。 进入7月， 大事小情不断， 大到经济情势恶化，G8 开会新疆闹事， 小到房价飞涨， 样样让人烦心， 总之没有什么好开心的事情。 &lt;/p&gt;
&lt;p&gt;在这样的环境下软件、互联网事业貌似不如以前， 美国佬捂着口袋不敢花钱了，也学着咱们中国老百姓存钱， 这下可把我们这些靠老美赚点小钱的人给害惨了。 软件下载量急剧下降，购买量严重萎缩， 在这样下去不去拉黑活就得和西北风了。 景气太差， 大多数公司都采取裁员减薪之釜底抽薪的办法来度过难关， 人人自危啊！~~ &lt;/p&gt;
&lt;p&gt;也不是想发牢骚， 只希望景气能早点恢复， 好让咱过太平日子~~~~~&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742131/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catessay/382.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742131/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742131/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catessay/382.html/feed</wfw:commentRss><description>又是好久没更新了，不是懒惰，是因为每每想写点什么的时候却又不知写什么。 进入7月， 大事小情不断， 大到经济情势恶化，G8 开会新疆闹事， 小到房价飞涨， 样样让人烦心， 总之没有什么好开心的事情。 
在这样的环境下软件、互联网事业貌似不如以前， 美国佬捂着口袋不敢花钱了，也学着咱们中国老百姓存钱， 这下可把我们这些靠老美赚点小钱的人给害惨了。 软件下载量急剧下降，购买量严重萎缩， 在这样下去不去拉黑活就得和西北风了。 景气太差， 大多数公司都采取裁员减薪之釜底抽薪的办法来度过难关， 人人自危啊！~~ 
也不是想发牢骚， 只希望景气能早点恢复， 好让咱过太平日子~~~~~


No related posts.


No related posts.&lt;img src=&quot;http://www1.feedsky.com/t1/283742131/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catessay/382.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742131/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742131/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>心情随笔</category><pubDate>Mon, 13 Jul 2009 10:47:27 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catessay/382.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=382</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catessay/382.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742131/4913920</fs:itemid></item><item><title>base64 encoder/decoder for objective-c 编码及解码</title><link>http://www.flyblog.info/catprogramming/376.html</link><content:encoded>&lt;p&gt;base64是广为使用的一种编码及解码方式， 通常用于网络传输和邮件传输中，使用base64可以将标点符号以及多字节文字等特殊字符编码以便传输，以下是base64 编码解码的objective－c代码， 可以用于desktop和iphone程序当中&lt;/p&gt;
&lt;p&gt;头文件&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left2&quot;&gt;Download &lt;a href=&quot;http://www.flyblog.info/wp-content/plugins/wp-codebox/wp-codebox.php?p=376&amp;amp;download=base64.h&quot;&gt;base64.h&lt;/a&gt;&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p3769&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p376code9&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #6e371a;&quot;&gt;#include &amp;lt;UIKit/UIKit.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;extern&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; EstimateBas64EncodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;extern&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; EstimateBas64DecodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;extern&lt;/span&gt; bool Base64EncodeData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;inInputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inInputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;outOutputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;BOOL&lt;/span&gt; wrapped&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;extern&lt;/span&gt; bool Base64DecodeData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;inInputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inInputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;实现文件&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left2&quot;&gt;Download &lt;a href=&quot;http://www.flyblog.info/wp-content/plugins/wp-codebox/wp-codebox.php?p=376&amp;amp;download=base64.m&quot;&gt;base64.m&lt;/a&gt;&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p37610&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p376code10&quot;&gt;&lt;pre class=&quot;objc&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #6e371a;&quot;&gt;#include &amp;quot;Base64Transcoder.h&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #6e371a;&quot;&gt;#include &amp;lt;math.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  0 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'A'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  1 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'B'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  2 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'C'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  3 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'D'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  4 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'E'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  5 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'F'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  6 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'G'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  7 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'H'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  8 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'I'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*  9 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'J'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 10 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'K'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 11 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'L'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 12 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'M'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 13 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'N'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 14 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'O'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 15 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'P'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 16 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'Q'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 17 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'R'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 18 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'S'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 19 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'T'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 20 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'U'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 21 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'V'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 22 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'W'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 23 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'X'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 24 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'Y'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 25 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'Z'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 26 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'a'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 27 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'b'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 28 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'c'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 29 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'d'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 30 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'e'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 31 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'f'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 32 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'g'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 33 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'h'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 34 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'i'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 35 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'j'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 36 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'k'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 37 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'l'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 38 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'m'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 39 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'n'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 40 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'o'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 41 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'p'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 42 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'q'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 43 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'r'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 44 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'s'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 45 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'t'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 46 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'u'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 47 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'v'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 48 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'w'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 49 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'x'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 50 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'y'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 51 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'z'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 52 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'0'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 53 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'1'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 54 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'2'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 55 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'3'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 56 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'4'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 57 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'5'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 58 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'6'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 59 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'7'&lt;/span&gt;, 
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 60 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'8'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 61 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'9'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 62 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'+'&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 63 */&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'/'&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/*
-1 = Base64 end of data marker.
-2 = White space (tabs, cr, lf, space)
-3 = Noise (all non whitespace, non-base64 characters) 
-4 = Dangerous noise
-5 = Illegal noise (null byte)
*/&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; SInt8 kBase64DecodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x00 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;5&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x01 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x02 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x03 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x04 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x05 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x06 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x07 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x08 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x09 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0a */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0b */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0c */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0d */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0e */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x0f */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x10 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x11 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x12 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x13 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x14 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x15 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x16 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x17 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x18 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x19 */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1a */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1b */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1c */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1d */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1e */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;, 	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x1f */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ' ' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '!' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '&amp;quot;' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '#' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '$' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '%' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '&amp;amp;' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ''' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '(' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ')' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '*' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '+' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;62&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ',' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '-' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '.' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '/' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;63&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '0' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;52&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '1' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;53&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '2' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;54&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '3' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;55&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '4' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;56&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '5' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;57&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '6' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;58&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '7' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;59&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '8' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;60&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '9' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;61&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ':' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ';' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '&amp;lt;' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '=' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '&amp;gt;' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '?' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '@' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'A' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'B' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'C' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'D' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'E' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'F' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;5&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'G' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;6&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'H' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;7&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'I' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;8&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'J' */&lt;/span&gt;  &lt;span style=&quot;color: #2400d9;&quot;&gt;9&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'K' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;10&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'L' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;11&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'M' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;12&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'N' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;13&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'O' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;14&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'P' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;15&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'Q' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;16&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'R' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;17&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'S' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;18&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'T' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;19&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'U' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;20&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'V' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;21&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'W' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;22&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'X' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;23&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'Y' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;24&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'Z' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;25&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '[' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '\' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* ']' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '^' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '_' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '`' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'a' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;26&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'b' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;27&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'c' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;28&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'd' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;29&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'e' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;30&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'f' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;31&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'g' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;32&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'h' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;33&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'i' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;34&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'j' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;35&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'k' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;36&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'l' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;37&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'm' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;38&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'n' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;39&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'o' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;40&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'p' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;41&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'q' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;42&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'r' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;43&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 's' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;44&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 't' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;45&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'u' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;46&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'v' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;47&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'w' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;48&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'x' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;49&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'y' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;50&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 'z' */&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;51&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '{' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,
	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '|' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '}' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* '~' */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;,	&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;/* 0x7f */&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_00000011 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0x03;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_00001111 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0x0F;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_00110000 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0x30;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_00111100 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0x3C;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_00111111 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0x3F;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_11000000 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0xC0;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_11110000 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0xF0;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 kBits_11111100 &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; 0xFC;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; EstimateBas64EncodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theEncodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;ceil&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;inDataSize &lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3.0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;;
theEncodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theEncodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;72&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;74&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; theEncodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;72&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theEncodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; EstimateBas64DecodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theDecodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;ceil&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;inDataSize &lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4.0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;;
&lt;span style=&quot;color: #11740a; font-style: italic;&quot;&gt;//theDecodedDataSize = theDecodedDataSize / 72 * 74 + theDecodedDataSize % 72;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theDecodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
bool Base64EncodeData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;inInputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inInputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;outOutputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;BOOL&lt;/span&gt; wrapped&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theEncodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; EstimateBas64EncodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;inInputDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize &amp;lt; theEncodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theEncodedDataSize;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;theInPtr &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;inInputData;
UInt32 theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;, theOutIndex &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;; theInIndex &amp;lt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;inInputDataSize &lt;span style=&quot;color: #002200;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;; theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11111100&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00000011&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt; | &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11110000&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00001111&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; | &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11000000&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00111111&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;wrapped &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theOutIndex &lt;span style=&quot;color: #002200;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;74&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;72&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;'&lt;/span&gt;;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;'&lt;/span&gt;;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theRemainingBytes &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; inInputDataSize &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; theInIndex;
&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theRemainingBytes &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11111100&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00000011&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt; | &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11110000&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'='&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'='&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;wrapped &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theOutIndex &lt;span style=&quot;color: #002200;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;74&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;72&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;'&lt;/span&gt;;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;'&lt;/span&gt;;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theRemainingBytes &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11111100&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00000011&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt; | &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11110000&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64EncodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00001111&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; | &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11000000&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'='&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;wrapped &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theOutIndex &lt;span style=&quot;color: #002200;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;74&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;72&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\r&lt;/span&gt;'&lt;/span&gt;;
		outOutputData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'&lt;span style=&quot;color: #2400d9;&quot;&gt;\n&lt;/span&gt;'&lt;/span&gt;;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
bool Base64DecodeData&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;inInputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; inInputDataSize, &lt;span style=&quot;color: #a61390;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputData, &lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span style=&quot;color: #a61390;&quot;&gt;memset&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;ioOutputData, &lt;span style=&quot;color: #bf1d1a;&quot;&gt;'.'&lt;/span&gt;, &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theDecodedDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; EstimateBas64DecodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;inInputDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize &amp;lt; theDecodedDataSize&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;theInPtr &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;const&lt;/span&gt; UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;inInputData;
UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;theOutPtr &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;UInt8 &lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;ioOutputData;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theInIndex &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;, theOutIndex &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;;
UInt8 theOutputOctet;
&lt;span style=&quot;color: #a61390;&quot;&gt;size_t&lt;/span&gt; theSequence &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;;
&lt;span style=&quot;color: #a61390;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;; theInIndex &amp;lt; inInputDataSize; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
	SInt8 theSextet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;;
&amp;nbsp;
	SInt8 theCurrentInputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	theSextet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64DecodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theCurrentInputOctet&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #a61390;&quot;&gt;break&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theCurrentInputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
		theSextet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64DecodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theCurrentInputOctet&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;while&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theCurrentInputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theInPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
		theSextet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; kBase64DecodeTable&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theCurrentInputOctet&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt;;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11111100;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet |&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00000011;
		theOutPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theOutputOctet;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11110000;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet |&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00001111;
		theOutPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theOutputOctet;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;lt;&amp;lt; &lt;span style=&quot;color: #2400d9;&quot;&gt;6&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_11000000;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;span style=&quot;color: #a61390;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#123;&lt;/span&gt;
		theOutputOctet |&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSextet &amp;gt;&lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; ? theSextet &lt;span style=&quot;color: #002200;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&lt;/span&gt; kBits_00111111;
		theOutPtr&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#91;&lt;/span&gt;theOutIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theOutputOctet;
		&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
	theSequence &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;6&lt;/span&gt;;
	&lt;span style=&quot;color: #a61390;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;theSequence &lt;span style=&quot;color: #002200;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #002200;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; theSequence &lt;span style=&quot;color: #002200;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #2400d9;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;
		theInIndex&lt;span style=&quot;color: #002200;&quot;&gt;++&lt;/span&gt;;
	&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #002200;&quot;&gt;*&lt;/span&gt;ioOutputDataSize &lt;span style=&quot;color: #002200;&quot;&gt;=&lt;/span&gt; theOutIndex;
&lt;span style=&quot;color: #a61390;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #a61390;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #002200;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;



&lt;p&gt;No related posts.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742132/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/376.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742132/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742132/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/376.html/feed</wfw:commentRss><description>base64是广为使用的一种编码及解码方式， 通常用于网络传输和邮件传输中，使用base64可以将标点符号以及多字节文字等特殊字符编码以便传输，以下是base64 编码解码的objective－c代码， 可以用于desktop和iphone程序当中


No related posts.&lt;img src=&quot;http://www1.feedsky.com/t1/283742132/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/376.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742132/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742132/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>编码</category><category>iPhone SDK</category><category>base64</category><category>Objective-C</category><category>encoding</category><category>编程开发</category><category>decoding</category><category>解码</category><pubDate>Wed, 10 Jun 2009 13:08:36 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/376.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=376</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/376.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742132/4913920</fs:itemid></item><item><title>iPhone SDK 开发：sqlite ＋ UITableView 实现大数据浏览</title><link>http://www.flyblog.info/catprogramming/371.html</link><content:encoded>&lt;p&gt;在开始学习iPhone开发的时候就捉摸 AppStore这样的程序时怎么实现的， 动态的从服务器抓取内容，再在表格中显示。 伴随着twitter的火爆， 越来越多的软件实现了此种方式来显示twitter消息， 不巧公司也要做twitter相关的东西，正好借此机会试探着实现一下这种显示功能。&lt;/p&gt;
&lt;p&gt;iPhone程序和传统的桌面程序的最大不同在于内存有限， 管理内存成了iPhone开发中时时刻刻需要谨记的事情。类似的功能在桌面程序上无非是将down下来的数据缓存于内存中，需要的时候画出来即可。 此法在iPhone上切不可行，虽然UITableViewCell可与reuse重复使用以节约内存使用量， 但是数据还是需要host在array或者dictionary中，必然导致程序实用大量内存儿崩溃退出。&lt;/p&gt;
&lt;p&gt;还好，iPhone系统内置sqlite微型数据库， 这么好的查询插入引擎不善用那就是罪过了。。。&lt;br /&gt;
言归正传， 基本思路是这样的： 从服务器读取内容，以twitter为例，先创建消息数据表&lt;br /&gt;
create table public_timelines (id integer primary key autoincrement, user varchar(40),\&lt;br /&gt;
				   userurl text,body text, created real, created_string text,\&lt;br /&gt;
				   imageurl text, ordernum int, userid varchar(20), user_screenname varchar(40));&lt;/p&gt;
&lt;p&gt;获取public timelines得到以xml形式存在的message条目，解析xml后将每条消息插入数据表， 写入成功后发送reload消息给table以重新填充表格单元内容， 如图&lt;br /&gt;
&lt;a href=&quot;http://www.flyblog.info/wp-content/uploads/2009/06/img_0078.png&quot;&gt;&lt;img src=&quot;http://www.flyblog.info/wp-content/uploads/2009/06/img_0078-200x300.png&quot; alt=&quot;&quot; width=200 height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-373&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果消息记录超过一条， 记得在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section&lt;br /&gt;
中返回消息记录 ＋ 1， 因为最后一个cell需要实现 Get More &amp;#8230;功能&lt;/p&gt;
&lt;p&gt;就像上一步说的， 点击最后一个cell也就是Get More&amp;#8230;时，在此从服务器获取 新的timelines， 将其解析再写入数据表中， 每次刷新时将数据表清空，否则显示的消息会越来越多:),  Get More 工作状态大概时这样的&lt;br /&gt;
&lt;a href=&quot;http://www.flyblog.info/wp-content/uploads/2009/06/img_0079.png&quot;&gt;&lt;img src=&quot;http://www.flyblog.info/wp-content/uploads/2009/06/img_0079-200x300.png&quot; alt=&quot;&quot; title=&quot;img_0079&quot; width=&quot;200&quot; height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-373&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如此， 程序实用的内存非常小， 每一条消息内容都是在需要的时候从数据库文件中读取， 减小了内存使用量就增加了程序的稳定性， 这对于成功的软件来说是非常必要的。 &lt;/p&gt;
&lt;p&gt;这篇小文只是对这样一个实现技术做了简单的介绍， 其中还有很多细节需要考虑， 比如：对sqlite的封装，以便于使用； 采用NSURLConnection方式下载数据以及post数据的实现； 还有xml解析可以使用iPhone SDK本身的NSXML* 系列API 也可以使用libxml， 具体当然根据个人习惯来选择。 针对Twitter， 已经有很多很好的开源库可以直接使用，比如 TwitterEngine&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/196.html' rel='bookmark' title='Permanent Link: iPhone表格中划动删除单元格'&gt;iPhone表格中划动删除单元格&lt;/a&gt; &lt;small&gt;iPhone上的程序很多用表格UITableView来显示数据、做布局等。 当用UITableView显示数据是经常会需要删除、插入数据条目。 SDK提供两种删除UITableViewCell的方法...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742133/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/371.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742133/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742133/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catprogramming/371.html/feed</wfw:commentRss><description>在开始学习iPhone开发的时候就捉摸 AppStore这样的程序时怎么实现的， 动态的从服务器抓取内容，再在表格中显示。 伴随着twitter的火爆， 越来越多的软件实现了此种方式来显示twitter消息， 不巧公司也要做twitter相关的东西，正好借此机会试探着实现一下这种显示功能。
iPhone程序和传统的桌面程序的最大不同在于内存有限， 管理内存成了iPhone开发中时时刻刻需要谨记的事情。类似的功能在桌面程序上无非是将down下来的数据缓存于内存中，需要的时候画出来即可。 此法在iPhone上切不可行，虽然UITableViewCell可与reuse重复使用以节约内存使用量， 但是数据还是需要host在array或者dictionary中，必然导致程序实用大量内存儿崩溃退出。
还好，iPhone系统内置sqlite微型数据库， 这么好的查询插入引擎不善用那就是罪过了。。。
言归正传， 基本思路是这样的： 从服务器读取内容，以twitter为例，先创建消息数据表
create table public_timelines (id integer primary key autoincrement, user varchar(40),\
				   userurl text,body text, created real, created_string text,\
				   imageurl text, ordernum int, userid varchar(20), user_screenname varchar(40));
获取public timelines得到以xml形式存在的message条目，解析xml后将每条消息插入数据表， 写入成功后发送reload消息给table以重新填充表格单元内容， 如图

如果消息记录超过一条， 记得在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
中返回消息记录 ＋ 1， 因为最后一个cell需要实现 Get More &amp;#8230;功能
就像上一步说的， 点击最后一个cell也就是Get More&amp;#8230;时，在此从服务器获取 [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catprogramming/196.html' rel='bookmark' title='Permanent Link: iPhone表格中划动删除单元格'&gt;iPhone表格中划动删除单元格&lt;/a&gt; &lt;small&gt;iPhone上的程序很多用表格UITableView来显示数据、做布局等。 当用UITableView显示数据是经常会需要删除、插入数据条目。 SDK提供两种删除UITableViewCell的方法...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;

Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;img src=&quot;http://www1.feedsky.com/t1/283742133/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catprogramming/371.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742133/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742133/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>iPhone SDK</category><category>Twitter</category><category>编程开发</category><category>SQLite</category><category>UITableView</category><pubDate>Tue, 09 Jun 2009 17:48:39 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catprogramming/371.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=371</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catprogramming/371.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742133/4913920</fs:itemid></item><item><title>Google Search Ajax API 实现站内搜索</title><link>http://www.flyblog.info/catinternet/366.html</link><content:encoded>&lt;p&gt;Google search 可以很容易实现站内搜索， 首先你需要到&lt;a href=&quot;http://code.google.com/apis/ajaxsearch/signup.html&quot;&gt;http://code.google.com/apis/ajaxsearch/signup.html&lt;/a&gt; 注册API Key。&lt;/p&gt;
&lt;p&gt;将下面的代码存为html文件&lt;/p&gt;

&lt;div class=&quot;wp_codebox_msgheader wp_codebox_hide&quot;&gt;&lt;span class=&quot;right&quot;&gt;&lt;sup&gt;&lt;a href=&quot;http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples&quot; target=&quot;_blank&quot; title=&quot;WP-CodeBox HowTo?&quot;&gt;&lt;span style=&quot;color: #99cc00&quot;&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;left&quot;&gt;&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:showCodeTxt('p366code12'); return false;&quot;&gt;View Code&lt;/a&gt; HTML&lt;/span&gt;&lt;div class=&quot;codebox_clear&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot; &gt;&lt;tr id=&quot;p36612&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot; id=&quot;p366code12&quot;&gt;&lt;pre class=&quot;html&quot; style=&quot;font-family:monospace;&quot;&gt;    &amp;lt;script src=&amp;quot;http://www.google.com/jsapi?key=ABQIAAAAoA_CzZ1j3fi975O5J0e28BTDgCurGPx7iDb5srKt0_zm3xn5GhSJK0sSDriiqfPAwr6wcPf7cpLPoQ&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!--mce:0--&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!--mce:1--&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;之后在html文件中添加两个div， 一个id为searchcontrol， 这是默认的输出结果的div，如果你需要自己自定义输出结果那么添加另一个div并设定id为searchResult&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catitnews/12.html' rel='bookmark' title='Permanent Link: google map 推出中文版'&gt;google map 推出中文版&lt;/a&gt; &lt;small&gt;google map 一直没有中文版，不过最近google发布了自己的中文版，不过暂时还不能通过map.google.com 访问， 而是ditu.google.com在浏览器输入ditu.google.com ， 可以看到中文的世界地图， 浏览至中国会发现在google的logo旁边额外增加了Mapabc.com的链接， 原来google使用的是mapabc的地图数 ...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catitnews/307.html' rel='bookmark' title='Permanent Link: Google Adsense 有新服务了'&gt;Google Adsense 有新服务了&lt;/a&gt; &lt;small&gt;刚收到Google Adsense发来的email，提供了新的基于兴趣的新式广告， 新的内容如下 We're writing to let you know about...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catinternet/6.html' rel='bookmark' title='Permanent Link: google天气查询'&gt;google天气查询&lt;/a&gt; &lt;small&gt;Google（谷歌）推出全新天气查询功能，比之以前有了长足的改进。[truncate]... ...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/283742134/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catinternet/366.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742134/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742134/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.flyblog.info/catinternet/366.html/feed</wfw:commentRss><description>Google search 可以很容易实现站内搜索， 首先你需要到http://code.google.com/apis/ajaxsearch/signup.html 注册API Key。
将下面的代码存为html文件

?View Code HTML1
2
    &amp;#60;script src=&amp;#34;http://www.google.com/jsapi?key=ABQIAAAAoA_CzZ1j3fi975O5J0e28BTDgCurGPx7iDb5srKt0_zm3xn5GhSJK0sSDriiqfPAwr6wcPf7cpLPoQ&amp;#34; type=&amp;#34;text/javascript&amp;#34;&amp;#62;&amp;#60;!--mce:0--&amp;#62;&amp;#60;/script&amp;#62;
    &amp;#60;script type=&amp;#34;text/javascript&amp;#34;&amp;#62;&amp;#60;!--mce:1--&amp;#62;&amp;#60;/script&amp;#62;

之后在html文件中添加两个div， 一个id为searchcontrol， 这是默认的输出结果的div，如果你需要自己自定义输出结果那么添加另一个div并设定id为searchResult


Related posts:google map 推出中文版 google map 一直没有中文版，不过最近google发布了自己的中文版，不过暂时还不能通过map.google.com 访问， 而是ditu.google.com在浏览器输入ditu.google.com ， 可以看到中文的世界地图， 浏览至中国会发现在google的logo旁边额外增加了Mapabc.com的链接， 原来google使用的是mapabc的地图数 ...Google Adsense 有新服务了 刚收到Google Adsense发来的email，提供了新的基于兴趣的新式广告， 新的内容如下 We're writing to let you know about...google天气查询 Google（谷歌）推出全新天气查询功能，比之以前有了长足的改进。[truncate]... ...
Related posts brought to you by Yet Another [...]


Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catitnews/12.html' rel='bookmark' title='Permanent Link: google map 推出中文版'&gt;google map 推出中文版&lt;/a&gt; &lt;small&gt;google map 一直没有中文版，不过最近google发布了自己的中文版，不过暂时还不能通过map.google.com 访问， 而是ditu.google.com在浏览器输入ditu.google.com ， 可以看到中文的世界地图， 浏览至中国会发现在google的logo旁边额外增加了Mapabc.com的链接， 原来google使用的是mapabc的地图数 ...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catitnews/307.html' rel='bookmark' title='Permanent Link: Google Adsense 有新服务了'&gt;Google Adsense 有新服务了&lt;/a&gt; &lt;small&gt;刚收到Google Adsense发来的email，提供了新的基于兴趣的新式广告， 新的内容如下 We're writing to let you know about...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.flyblog.info/catinternet/6.html' rel='bookmark' title='Permanent Link: google天气查询'&gt;google天气查询&lt;/a&gt; &lt;small&gt;Google（谷歌）推出全新天气查询功能，比之以前有了长足的改进。[truncate]... ...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;

Related posts brought to you by &lt;a href='http://mitcho.com/code/yarpp/'&gt;Yet Another Related Posts Plugin&lt;/a&gt;.&lt;img src=&quot;http://www1.feedsky.com/t1/283742134/flyblogInfo/feedsky/s.gif?r=http://www.flyblog.info/catinternet/366.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/flyblogInfo/283742134/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/flyblogInfo/283742134/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>互联网络</category><category>google search</category><category>ajax api</category><pubDate>Mon, 01 Jun 2009 23:43:43 +0800</pubDate><author>Flyblog</author><comments>http://www.flyblog.info/catinternet/366.html#comments</comments><guid isPermaLink="false">http://www.flyblog.info/?p=366</guid><dc:creator>Flyblog</dc:creator><fs:srclink>http://www.flyblog.info/catinternet/366.html</fs:srclink><fs:srcfeed>http://www.flyblog.info/wp-feed.php</fs:srcfeed><fs:itemid>feedsky/flyblogInfo/~7212821/283742134/4913920</fs:itemid></item></channel></rss>