论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
实现汉字动态编码的过程就是先进行汉字识别,然后建立编码字典、提取字模、建立动态字库、改写机内码。首先扫描一遍程序文件,识别其中的汉字,将它们按出现先后顺序或机内码的大小排序,重复出现的剔除,建立了一个编码字典;根据汉字在编码字典的位置(序号),可以对汉字按区码、位码进行编码,也可以采用其它的方法编码,总之序号与它的动态编码存在一一对应关系;根据字典中每个汉字的机内码依次从PC机的汉字点阵字库中提取字模,顺序存储,建立一个小规模的动态字库,这样每个汉字的字模在字库中的位置就与其在编码字典中的序号、动态编码一一对应了。最后,再扫描一遍程序文件,按照编码字典将每个汉字的机内码改写为对应的动态编码。因为程序文件中的汉字随时会增减,编码随之而变,字库的大小也随时在变。所以称之为动态编码和动态字库。
考虑一般应用场合,1000个左右的汉字即可满足要求,按照汉字动态编码方法所需的字库仅为32K字节大小,只需要1片27256即可,几乎不用增加什么硬件。这样,字库的大小可由汉字的多少控制,程序的编写和维护可以沿用中文系统下的习惯,仅需要编写好的单片机程序用PC机进行一次预处理,程序员从繁杂的汉字处理工作中解放出来,有效地降低了软件和硬件开发成本。
3 汉字动态编码的具体实现
实现汉字动态编码的关键是建立编码字典和改写机内码。下面以是显示1行汉字"天上有个太阳,水中有个月亮"为例,说明动态编码的实现过程。
(1)汉字识别
汉字在PC机内的存储和处理是用机内码来实现的。每个汉字的机内码是唯一的,由2个字节组成,分区码和位码,为了和西文的ASCII码有区别,汉字机内码的区码和位码的取值都大于0A0H。我们要处理的源程序文件都是文本文件,存储的都是西文字符、控制符的ASCII码和中文字符的机内码,当扫描到文件中大于0A0H的字节内容时,即可判断该字节是汉字机内码的1个字节,而且肯定是成对出现,第1个字节是区别,第2个字节是位码,都大于0A0H,否则出错。
在C和汇编程序中表示字符的方式有所不同,但最终字符在文件中的存储格式是一样的。显示上面那行汉字,用C语言可以表示为:
char OneSent[]="天上有个太阳,水中有个月亮";
printfhz(OneSent);/*printfh