用C语言显示汉字的演示程序
来源:互联网 发布:网络信息化领导小组 编辑:程序博客网 时间:2024/06/05 23:57
汉字是方块字,宽高相等的汉字库在嵌入式领域有着广泛的应用,且其解析也相对来说是比较简单的。
汉字在汉字库中的索引一般会遵循GB2312/GBK编码规则,GB2312/GBK规定汉字编码由2个字节组成,其中低字节区码,高字节为位码。本文以最常见的UCDOS中16x16的宋体字库HZK16来演示汉字的显示方法,HZK16中汉字的存放基于GB2312编码的顺序,每个汉字的点阵数据占32个字节,每个字节表征8个点的状态,每行从左至右的点的状态分别对应字节从高到低的位值。
汉字在汉字库中的索引一般会遵循GB2312/GBK编码规则,GB2312/GBK规定汉字编码由2个字节组成,其中低字节区码,高字节为位码。本文以最常见的UCDOS中16x16的宋体字库HZK16来演示汉字的显示方法,HZK16中汉字的存放基于GB2312编码的顺序,每个汉字的点阵数据占32个字节,每个字节表征8个点的状态,每行从左至右的点的状态分别对应字节从高到低的位值。
下面提供完整的演示程序以供参考,
#include <stdio.h>#define FONT_SIZE(16)/* 字体大小 *//* 获取汉字在汉字库中的索引位置 根据GB2312/GBK编码规则,汉字的低字节hz[0]是区码,高字节hz[1]是位码,汉字库从区位码0xa1a1开始存放汉字*/#define HZ_INDEX(hz)((hz[0] - 0xa1) * 94 + (hz[1] - 0xa1))#define DOTS_BYTES(FONT_SIZE * FONT_SIZE / 8)/* 汉字点阵数据所占的字节数 */int main(int argc, char* argv[]){FILE* hzk;unsigned char song[2] = "\xcb\xce";/* “宋”字的区位码为0xcbce */unsigned char dots[DOTS_BYTES];unsigned char b;int i, j, k;/* 打开汉字库hzk16,并从中提取“宋”字的点阵数据 */if((hzk = fopen("hzk16", "rb")) == NULL){return -1;}fseek(hzk, HZ_INDEX(song) * DOTS_BYTES, SEEK_SET);fread(dots, sizeof(unsigned char), DOTS_BYTES, hzk);fclose(hzk);/* 用“*”号根据点阵数据显示“宋”字 */for(i = 0; i < FONT_SIZE; i++){/* 每行共FONT_SIZE / 8个字节 */for(j = 0; j < FONT_SIZE / 8; j++){b = dots[i * 2 + j];/* 从左至右的点分别对应字节从高到低的位值 */for(k = 0; k < 8; k++){if(b & 0x80)printf("%c ", '*');elseprintf(" ");b <<= 1;}}printf("\n");}return 0;}
程序编译运行后会出现如下的显示效果,
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- 用C语言显示汉字的演示程序
- 基于pic16f877的1602液晶汉字显示 c语言程序
- 怎样用C语言编写出能够显示汉字的程序
- 液晶12864汉字显示程序及显示顺序正常的C语言程序
- C语言汉字显示问题
- 关于C语言数组越界的演示程序
- 用C语言在dos 下显示汉字
- 西卡C语言汉诺塔演示程序
- 在C语言中显示汉字
- c语言实现单独显示汉字
- 在C程序中显示汉字
- 在C程序里显示汉字
- 转载:在C程序中显示汉字
- 在C程序中显示汉字
- 在C程序中显示汉字
- 显示该程序的路径//C语言
- 【原创】演示文本方式下显示汉字的汇编源程序
- 用java语言实现汉诺塔的演示程序
- 每日一题(4)——动态规划《Introduction to Algorithms》总结篇
- android中的dialog的总结
- Android流量统计TrafficStats类的使用
- RH9里/var/lock/subsys目录的作用
- 【Linux&音频】Alsa音频编程【精华】
- 用C语言显示汉字的演示程序
- WPF(小结4)TreeView的数据分层模板
- ibatis
- 普适GIS——ArcGIS Online试用 (1)
- review board 安装和使用系列 ---(三)创建新的 Review Board 站点
- C# 窗体位置 Show和ShowDialog
- c#自动关闭数据库连接
- CSS Float
- Extending PhoneGap with native plugins for iOS (通过phonegap plugin的方式实现ios和javascript的互相调用)