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

<channel>
	<title>高山仰止 &#187; 代码研究</title>
	<atom:link href="http://goto8848.net/category/%e4%bb%a3%e7%a0%81%e7%a0%94%e7%a9%b6/feed/" rel="self" type="application/rss+xml" />
	<link>http://goto8848.net</link>
	<description>这里只是一些技术笔记和生活经历</description>
	<lastBuildDate>Thu, 07 Jul 2011 01:08:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>XML-RPC</title>
		<link>http://goto8848.net/2008/04/xml-rpc/</link>
		<comments>http://goto8848.net/2008/04/xml-rpc/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 13:25:37 +0000</pubDate>
		<dc:creator>Crazy Loong</dc:creator>
				<category><![CDATA[代码研究]]></category>
		<category><![CDATA[RPC]]></category>
		<category><![CDATA[WLW]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://goto8848.net/?p=161</guid>
		<description><![CDATA[XML-RPC（XML Remote Procedure Call，即 XML 远程方法调用）是一套跨平台的、基于 Internet 过程的规范和实现。XML-RPC 采用 http 作为传输协议，XML作为信息的编码格式，简单高效，能够传送、处理、返回复杂的数据结构。工作流程如下图所示（点击缩略图看大图）： 数据编码成 XML 格式，通过 http 协议传输到另一台主机，然后解码 XML 还原数据。XML-RPC 是典型的 C/S 结构，一次实现应该包括 RPC Client 和 RPC Server 两个部分。不过，从理论上讲，XML-RPC 的 Client 和 Server 可以任意搭配。 更多的文档，大家可以去 XML-RPC 官方网站查询。 XML-RPC 是一个伟大的东西，它的跨平台特性和语言无关性，让我们的远程调用更加简单。我们通过 WLW（Windows Live Writer）发表 Blog 文章就是典型的 XML-RPC 应用。 PS：下一次，我将介绍 XML-RPC 在 WordPress 上的具体应用。]]></description>
			<content:encoded><![CDATA[<p><a title="XML-RPC" href="http://www.xmlrpc.com/" target="_blank">XML-RPC</a>（XML Remote Procedure Call，即 XML 远程方法调用）是一套跨平台的、基于 Internet 过程的规范和实现。XML-RPC 采用 http 作为传输协议，XML作为信息的编码格式，简单高效，能够传送、处理、返回复杂的数据结构。工作流程如下图所示（点击缩略图看大图）：</p>
<p><a class="thickbox" href="http://goto8848.net/wordpress/wp-content/uploads/2008/04/xml-rpc.jpg"><img class="alignnone size-medium wp-image-162" title="xml-rpc" src="http://goto8848.net/wordpress/wp-content/uploads/2008/04/xml-rpc-300x153.jpg" alt="XML-RPC" width="300" height="153" /></a></p>
<p>数据编码成 XML 格式，通过 http 协议传输到另一台主机，然后解码 XML 还原数据。XML-RPC 是典型的 C/S 结构，一次实现应该包括 RPC Client 和 RPC Server 两个部分。不过，从理论上讲，XML-RPC 的 Client 和 Server 可以任意搭配。</p>
<p>更多的文档，大家可以去 <a title="XML-RPC" href="http://www.xmlrpc.com/" target="_blank">XML-RPC 官方网站</a>查询。</p>
<p>XML-RPC 是一个伟大的东西，它的跨平台特性和语言无关性，让我们的远程调用更加简单。我们通过 <a title="Windows Live Writer" href="http://writer.live.com/" target="_blank">WLW</a><a title="Windows Live Writer" href="http://writer.live.com/" target="_blank">（Windows Live Writer）</a>发表 Blog 文章就是典型的 XML-RPC 应用。</p>
<p>PS：下一次，我将介绍 XML-RPC 在 WordPress 上的具体应用。</p>
<img src="http://goto8848.net/wordpress/?ak_action=api_record_view&id=161&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://goto8848.net/2008/04/xml-rpc/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>PHPMailer</title>
		<link>http://goto8848.net/2008/04/phpmailer/</link>
		<comments>http://goto8848.net/2008/04/phpmailer/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 02:18:55 +0000</pubDate>
		<dc:creator>Crazy Loong</dc:creator>
				<category><![CDATA[代码研究]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[PHPMailer]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[发送]]></category>
		<category><![CDATA[邮件]]></category>

		<guid isPermaLink="false">http://goto8848.net/?p=158</guid>
		<description><![CDATA[版权声明：原创文章，转载请注明出处，Crazy Loong(http://goto8848.net) 就如它的名字一样，PHPMailer 是一个使用 PHP 编写的邮件发送类，同时，PHPMailer 也是一个功能强大的类。 官方网站：http://phpmailer.codeworxtech.com/ PHPMailer 的主要特点有： 1、在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。 2、平台应用广泛，支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。 3、支持嵌入图像，附件，HTML 邮件。 4、可靠的强大的调试功能。 5、支持 SMTP 认证。 6、自定义邮件头。 7、支持 8bit、base64、binary 和 quoted-printable 编码。 PHPMailer 的最新稳定版本是 2.0.0，大家可以从官方网站下载。 大家也许会问，PHP 不是已经内置了 mail() 函数了吗，为什么要用 PHPMailer 呢？确实，mail() 函数更快，但是，PHPMailer 却可以使发送邮件变得更加便捷，发送附件和 HTML 邮件也成为可能。同时，你可以使用你自己喜欢的 SMTP 服务器来发送邮件，而不是仅限于 *nix 平台（mail() 函数就有这个限制，对于广大 Win 主机用户来说，简直是噩梦）。总之，PHPMailer 能给你更加便捷的体验。 下面是使用 PHPMailer 类的简单例子。 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">版权声明：原创文章，转载请注明出处，Crazy Loong(http://goto8848.net)</span></p>
<p>就如它的名字一样，PHPMailer 是一个使用 PHP 编写的邮件发送类，同时，PHPMailer 也是一个功能强大的类。</p>
<p>官方网站：<a title="PHPMailer" href="http://phpmailer.codeworxtech.com/">http://phpmailer.codeworxtech.com/</a></p>
<p>PHPMailer 的主要特点有：</p>
<p>1、在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。<br />
2、平台应用广泛，支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。<br />
3、支持嵌入图像，附件，HTML 邮件。<br />
4、可靠的强大的调试功能。<br />
5、支持 SMTP 认证。<br />
6、自定义邮件头。<br />
7、支持 8bit、base64、binary 和 quoted-printable 编码。</p>
<p>PHPMailer 的最新稳定版本是 2.0.0，大家可以从官方网站下载。</p>
<p>大家也许会问，PHP 不是已经内置了 mail() 函数了吗，为什么要用 PHPMailer 呢？确实，mail() 函数更快，但是，PHPMailer 却可以使发送邮件变得更加便捷，发送附件和 HTML 邮件也成为可能。同时，你可以使用你自己喜欢的 SMTP 服务器来发送邮件，而不是仅限于 *nix 平台（mail() 函数就有这个限制，对于广大 Win 主机用户来说，简直是噩梦）。总之，PHPMailer 能给你更加便捷的体验。<span id="more-158"></span></p>
<p>下面是使用 PHPMailer 类的简单例子。</p>
<pre><code class="php">require_once("class.phpmailer.php");

// 实例化 PHPMailer 类
$mail = new MyMailer;

// 填入最基本的参数
$mail-&gt;AddAddress("crazyloong@gmail.com", "Crazy Loong"); // 收件人
$mail-&gt;Subject = "Here is the subject"; // 邮件主题
$mail-&gt;Body = "This is the message body"; // 邮件内容
$mail-&gt;AddAttachment("c:/temp/11-10-00.zip", "new_name.zip");  // 附件设置，第一个参数是附件地址，第二个是附件名

if(!$mail-&gt;Send()) // 发送邮件
{
echo "There was an error sending the message";
exit;
}

echo "Message was sent successfully";</code></pre>
<p>例子很简单，但我相信足够让大家了解 PHPMailer 了。其它更高级的功能（图像嵌入、SMTP 认证等等）以后再继续介绍。</p>
<p>记住，<a title="PHPMailer 官方" href="http://phpmailer.codeworxtech.com/">官方文档</a>永远是你最好的老师，^0^。</p>
<p>PS：PHPMailer 已经集成在了 WordPress 中，我们可以很方便的使用它。</p>
<img src="http://goto8848.net/wordpress/?ak_action=api_record_view&id=158&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://goto8848.net/2008/04/phpmailer/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>汉字编码和输出显示原理</title>
		<link>http://goto8848.net/2007/02/%e6%b1%89%e5%ad%97%e7%bc%96%e7%a0%81%e5%92%8c%e8%be%93%e5%87%ba%e6%98%be%e7%a4%ba%e5%8e%9f%e7%90%86/</link>
		<comments>http://goto8848.net/2007/02/%e6%b1%89%e5%ad%97%e7%bc%96%e7%a0%81%e5%92%8c%e8%be%93%e5%87%ba%e6%98%be%e7%a4%ba%e5%8e%9f%e7%90%86/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 11:53:15 +0000</pubDate>
		<dc:creator>Crazy Loong</dc:creator>
				<category><![CDATA[代码研究]]></category>
		<category><![CDATA[单片机学习]]></category>

		<guid isPermaLink="false">http://goto8848.net/wordpress/?p=7</guid>
		<description><![CDATA[版权声明：原创、部分演绎，转载请注明出处，Crazy Loong(http://goto8848.net) 借着自己学习液晶显示，复习了一下汉字编码和输出显示原理。以下是我整理的结果，其中有不少来自网上，包括我举的例子。 一、汉字的编码 1. 国标码 “中华人民共和国国家标准信息交换汉字编码”，标准号GB2312-80。该编码字符集收录了一级汉字3755个，二级汉字3008个，图形符号682个，共7445个。 在GB2312-80代码表中，纵向分为0～93,共94行；横向也是0～93,共94列。行与列分别用7位二进制码表示，第一字节表示行，第二字节表示列。其值从0100001到1111110（十六进制为21-7E）。这正是ASCII码的可打印字符的编码范围。国标码是将第一字节和第二字节连写而得，习惯上称第一字节为“高字节”，第二字节为“低字节”，一般用十六进制表示。 2. 区位码 整个代码表分为94个区（对应高字节），每个区94个位（对应低字节），合起来就是区位码，按如下规则确定： 高位内码=高字节国标码-20H 低位内码=低字节国标码-20H 例如，汉字“啊”在16行的第l列，则它的区位码是“1001H”。 注：区位码的高字节和低字节的取值范围均是01H~5EH。 3. 机内码 也就是内码。汉字区位码的区码和位码的范围在1~94内，如果直接作为机内码必将与基本的ASCII码冲突。为避免与基本ASCII码中的控制码与字符码的冲突，分别在区码、位码上增加A0H（即10100000）。所以，内码同样占两个字节，分别称为高位内码与低位内码，按如下规则确定： 高位内码=区码+A0H 低位内码=位码+A0H 例如，汉字“啊”的内码是“B0A1H”（即1011000010100001）。 注：高位内码与低位内码的取值范围均是A1H~FEH。 二、汉字的输出显示 汉字的输出主要是指汉字字形的输出，方式主要是显示和打印两种。实际上，每一个汉字都是一个特定的图形，用一个点阵来表示。点阵的每个点位只有两种状态：有点或无点。若用二进制代码来表示即为该位取值为1 表示有点，取值为0表示无点。 例如，如果用16×16点阵来表示一个汉字，则该汉字图形由16行16列共256个点构成，这256个点需用256个二进制的位来描述，需要32个字节来存储用于存放图形信息，这样的二进制代码串称为汉字的“字模”。 所有汉字和各种符号的点阵信息就组成汉字的“字模库”（简称字库）。字模的表示顺序为：先从左到右，再从上到下。也就是先画第一行左上方的8个点，再是右上方的8个点，然后是第二行左边8个点，右边8个点，以此类推。 三、汉字的显示原理 1. 从键盘输入的汉字经过键盘管理模块，变换成机内码。 2. 然后经字模检索程序，查到机内码对应的点阵信息在字模库的地址。 3. 从字库中检索出该汉字点阵信息。 4. 利用显示驱动程序将这些信息送到显示卡的显示缓冲存储器中。 5. 显示器的控制器把点阵信息整屏顺次读出，并使每一个二进制位与屏幕的一个点位相对应，就可以将汉字字形在屏幕上显示出来。 四、用区位码获取汉字的点阵信息 以16×16的点阵汉字库文件为例。一个汉字用了256个点共32个字节表示。汉字共分94区，每个区有94位汉字。机内码用两个字节表示，第一个字节存储区号（qh），为了和ASCII码相区别，范围从十六进制的A1H开始（小于80H地为ASCII码字符），对应区码的第一区；第二个字节是位号（wh），范围也从A1H开始，对应某区中的第一个位码。这样，将汉字机内码减去A0A0H就得到该汉字的区位码。从而可以得到汉字在字库中的具体位置： 位置=(94*(qh-1) + wh-1) * 一个汉字字模占用的字节数 对于16×16的点阵汉字库，汉字在字库中的具体位置的计算公式就是：(94*(qh-1)+wh-1)*32。例如，“房”的机内码为十六进制的B7BF，则其区位码是B7BFH-A0A0H=171FH，转化为十进制就是2331，在汉字库中的位置就是32*[94*(23-1)+(31-1)]=67136字节以后的32个字节为“房”的显示点阵。]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">版权声明：原创、部分演绎，转载请注明出处，Crazy Loong(http://goto8848.net) </font></p>
<p>借着自己学习液晶显示，复习了一下汉字编码和输出显示原理。以下是我整理的结果，其中有不少来自网上，包括我举的例子。<span id="more-7"></span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>一、</span></span><span style="font-family: 宋体">汉字的编码</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>1.<span> </span></span></span><span style="font-family: 宋体">国标码</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">“中华人民共和国国家标准信息交换汉字编码”，标准号</span><span lang="EN-US">GB2312-80</span><span style="font-family: 宋体">。该编码字符集收录了一级汉字</span><span lang="EN-US">3755</span><span style="font-family: 宋体">个，二级汉字</span><span lang="EN-US">3008</span><span style="font-family: 宋体">个，图形符号</span><span lang="EN-US">682</span><span style="font-family: 宋体">个，共</span><span lang="EN-US">7445</span><span style="font-family: 宋体">个。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">在</span><span lang="EN-US">GB2312-80</span><span style="font-family: 宋体">代码表中，纵向分为</span><span lang="EN-US">0</span><span style="font-family: 宋体">～</span><span lang="EN-US">93,</span><span style="font-family: 宋体">共</span><span lang="EN-US">94</span><span style="font-family: 宋体">行；横向也是</span><span lang="EN-US">0</span><span style="font-family: 宋体">～</span><span lang="EN-US">93,</span><span style="font-family: 宋体">共</span><span lang="EN-US">94</span><span style="font-family: 宋体">列。行与列分别用</span><span lang="EN-US">7</span><span style="font-family: 宋体">位二进制码表示，第一字节表示行，第二字节表示列。其值从</span><span lang="EN-US">0100001</span><span style="font-family: 宋体">到</span><span lang="EN-US">1111110</span><span style="font-family: 宋体">（十六进制为</span><span lang="EN-US">21-7E</span><span style="font-family: 宋体">）。这正是</span><span lang="EN-US">ASCII</span><span style="font-family: 宋体">码的可打印字符的编码范围。国标码是将第一字节和第二字节连写而得，习惯上称第一字节为“高字节”，第二字节为“低字节”，一般用十六进制表示。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>2.<span> </span></span></span><span style="font-family: 宋体">区位码</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">整个代码表分为</span><span lang="EN-US">94</span><span style="font-family: 宋体">个区（对应高字节），每个区</span><span lang="EN-US">94</span><span style="font-family: 宋体">个位（对应低字节），合起来就是区位码，按如下规则确定：</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">高位内码</span><span lang="EN-US">=</span><span style="font-family: 宋体">高字节国标码</span><span lang="EN-US">-20H</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">低位内码</span><span lang="EN-US">=</span><span style="font-family: 宋体">低字节国标码</span><span lang="EN-US">-20H</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">例如，汉字“啊”在</span><span lang="EN-US">16</span><span style="font-family: 宋体">行的第</span><span lang="EN-US">l</span><span style="font-family: 宋体">列，则它的区位码是“</span><span lang="EN-US">1001H</span><span style="font-family: 宋体">”。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">注：区位码的高字节和低字节的取值范围均是</span><span lang="EN-US">01H~5EH</span><span style="font-family: 宋体">。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>3.<span> </span></span></span><span style="font-family: 宋体">机内码</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">也就是内码。汉字区位码的区码和位码的范围在</span><span lang="EN-US">1~94</span><span style="font-family: 宋体">内，如果直接作为机内码必将与基本的</span><span lang="EN-US">ASCII</span><span style="font-family: 宋体">码冲突。为避免与基本</span><span lang="EN-US">ASCII</span><span style="font-family: 宋体">码中的控制码与字符码的冲突，分别在区码、位码上增加</span><span lang="EN-US">A0H</span><span style="font-family: 宋体">（即</span><span lang="EN-US">10100000</span><span style="font-family: 宋体">）。所以，内码同样占两个字节，分别称为高位内码与低位内码，按如下规则确定：</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">高位内码</span><span lang="EN-US">=</span><span style="font-family: 宋体">区码</span><span lang="EN-US">+A0H</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">低位内码</span><span lang="EN-US">=</span><span style="font-family: 宋体">位码</span><span lang="EN-US">+A0H</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">例如，汉字“啊”的内码是“</span><span lang="EN-US">B<chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="a" w:st="on"></chmetcnv>0A1H</span><span style="font-family: 宋体">”（即</span><span lang="EN-US">1011000010100001</span><span style="font-family: 宋体">）。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">注：高位内码与低位内码的取值范围均是</span><span lang="EN-US">A1H~FEH</span><span style="font-family: 宋体">。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>二、</span></span><span style="font-family: 宋体">汉字的输出显示</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">汉字的输出主要是指汉字字形的输出，方式主要是显示和打印两种。实际上，每一个汉字都是一个特定的图形，用一个点阵来表示。点阵的每个点位只有两种状态：有点或无点。若用二进制代码来表示即为该位取值为</span><span lang="EN-US">1 </span><span style="font-family: 宋体">表示有点，取值为</span><span lang="EN-US">0</span><span style="font-family: 宋体">表示无点。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">例如，如果用</span><span lang="EN-US">16</span><span style="font-family: 宋体">×</span><span lang="EN-US">16</span><span style="font-family: 宋体">点阵来表示一个汉字，则该汉字图形由</span><span lang="EN-US">16</span><span style="font-family: 宋体">行</span><span lang="EN-US">16</span><span style="font-family: 宋体">列共</span><span lang="EN-US">256</span><span style="font-family: 宋体">个点构成，这</span><span lang="EN-US">256</span><span style="font-family: 宋体">个点需用</span><span lang="EN-US">256</span><span style="font-family: 宋体">个二进制的位来描述，需要</span><span lang="EN-US">32</span><span style="font-family: 宋体">个字节来存储用于存放图形信息，这样的二进制代码串称为汉字的“字模”。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">所有汉字和各种符号的点阵信息就组成汉字的“字模库”（简称字库）。字模的表示顺序为：先从左到右，再从上到下。也就是先画第一行左上方的</span><span lang="EN-US">8</span><span style="font-family: 宋体">个点，再是右上方的</span><span lang="EN-US">8</span><span style="font-family: 宋体">个点，然后是第二行左边</span><span lang="EN-US">8</span><span style="font-family: 宋体">个点，右边</span><span lang="EN-US">8</span><span style="font-family: 宋体">个点，以此类推。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>三、</span></span><span style="font-family: 宋体">汉字的显示原理</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>1.<span> </span></span></span><span style="font-family: 宋体">从键盘输入的汉字经过键盘管理模块，变换成机内码。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>2.<span> </span></span></span><span style="font-family: 宋体">然后经字模检索程序，查到机内码对应的点阵信息在字模库的地址。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>3.<span> </span></span></span><span style="font-family: 宋体">从字库中检索出该汉字点阵信息。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>4.<span> </span></span></span><span style="font-family: 宋体">利用显示驱动程序将这些信息送到显示卡的显示缓冲存储器中。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>5.<span> </span></span></span><span style="font-family: 宋体">显示器的控制器把点阵信息整屏顺次读出，并使每一个二进制位与屏幕的一个点位相对应，就可以将汉字字形在屏幕上显示出来。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt" class="MsoNormal"><span lang="EN-US"><span>四、</span></span><span style="font-family: 宋体">用区位码获取汉字的点阵信息</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">以</span><span lang="EN-US">16×16</span><span style="font-family: 宋体">的点阵汉字库文件为例。一个汉字用了</span><span lang="EN-US">256</span><span style="font-family: 宋体">个点共</span><span lang="EN-US">32</span><span style="font-family: 宋体">个字节表示。汉字共分</span><span lang="EN-US">94</span><span style="font-family: 宋体">区，每个区有</span><span lang="EN-US">94</span><span style="font-family: 宋体">位汉字。机内码用两个字节表示，第一个字节存储区号（</span><span lang="EN-US">qh</span><span style="font-family: 宋体">），为了和</span><span lang="EN-US">ASCII</span><span style="font-family: 宋体">码相区别，范围从十六进制的</span><span lang="EN-US">A1H</span><span style="font-family: 宋体">开始（小于</span><span lang="EN-US">80H</span><span style="font-family: 宋体">地为</span><span lang="EN-US">ASCII</span><span style="font-family: 宋体">码字符），对应区码的第一区；第二个字节是位号（</span><span lang="EN-US">wh</span><span style="font-family: 宋体">），范围也从</span><span lang="EN-US">A1H</span><span style="font-family: 宋体">开始，对应某区中的第一个位码。这样，将汉字机内码减去</span><span lang="EN-US">A<chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="a" w:st="on"></chmetcnv>0A0H</span><span style="font-family: 宋体">就得到该汉字的区位码。从而可以得到汉字在字库中的具体位置：</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span lang="EN-US">位置=(94*(qh-1) + wh-1) * </span><span style="font-family: 宋体">一个汉字字模占用的字节数</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">对于</span><span lang="EN-US">16×16</span><span style="font-family: 宋体">的点阵汉字库，汉字在字库中的具体位置的计算公式就是：</span><span lang="EN-US">(94*(qh-1)+wh-1)*32</span><span style="font-family: 宋体">。例如，“房”的机内码为十六进制的</span><span lang="EN-US">B7BF</span><span style="font-family: 宋体">，则其区位码是</span><span lang="EN-US">B7BFH-A<chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="a" w:st="on"></chmetcnv>0A0H=171FH</span><span style="font-family: 宋体">，转化为十进制就是</span><span lang="EN-US">2331</span><span style="font-family: 宋体">，在汉字库中的位置就是</span><span lang="EN-US">32*[94*(23-1)+(31-1)]=67136</span><span style="font-family: 宋体">字节以后的</span><span lang="EN-US">32</span><span style="font-family: 宋体">个字节为“房”的显示点阵。</span></p>
<img src="http://goto8848.net/wordpress/?ak_action=api_record_view&id=7&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://goto8848.net/2007/02/%e6%b1%89%e5%ad%97%e7%bc%96%e7%a0%81%e5%92%8c%e8%be%93%e5%87%ba%e6%98%be%e7%a4%ba%e5%8e%9f%e7%90%86/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

